60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4d697a756b6920496e75000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5a485500000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200050d565b508060049080519060200190620000af9291906200050d565b5050506000620000c46200020860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000196731a909f08b3628d2b72998d3e50f1681acfb61d856c4bbb0bace1a6bd937d800000006200021060201b60201c565b600160066000731a909f08b3628d2b72998d3e50f1681acfb61d8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200084d565b600033905090565b6c4bbb0bace1a6bd937d8000000081620002346200029f60201b620003bd1760201c565b620002409190620006d7565b111562000284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027b9062000643565b60405180910390fd5b6200029b8282620002a960201b620009b11760201c565b5050565b6000600254905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200031c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003139062000687565b60405180910390fd5b62000330600083836200042160201b60201c565b8060026000828254620003449190620006d7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200039b9190620006d7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1673a221af4a429b734abb1cc53fbd0c1d0fa47e149473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004159190620006a9565b60405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200050857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000507576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004fe9062000665565b60405180910390fd5b5b505050565b8280546200051b906200073e565b90600052602060002090601f0160209004810192826200053f57600085556200058b565b82601f106200055a57805160ff19168380011785556200058b565b828001600101855582156200058b579182015b828111156200058a5782518255916020019190600101906200056d565b5b5090506200059a91906200059e565b5090565b5b80821115620005b95760008160009055506001016200059f565b5090565b6000620005cc601983620006c6565b9150620005d982620007d2565b602082019050919050565b6000620005f3601483620006c6565b91506200060082620007fb565b602082019050919050565b60006200061a601f83620006c6565b9150620006278262000824565b602082019050919050565b6200063d8162000734565b82525050565b600060208201905081810360008301526200065e81620005bd565b9050919050565b600060208201905081810360008301526200068081620005e4565b9050919050565b60006020820190508181036000830152620006a2816200060b565b9050919050565b6000602082019050620006c0600083018462000632565b92915050565b600082825260208201905092915050565b6000620006e48262000734565b9150620006f18362000734565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000729576200072862000774565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200075757607f821691505b602082108114156200076e576200076d620007a3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b7f736f6d657468696e672077656e742077726f6e67000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611a65806200085d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806378051f4d1161008c578063a457c2d711610066578063a457c2d714610261578063a9059cbb14610291578063dd62ed3e146102c1578063e706f1e2146102f1576100ea565b806378051f4d146102095780638da5cb5b1461022557806395d89b4114610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030d565b60405161010491906113da565b60405180910390f35b61012760048036038101906101229190611191565b61039f565b60405161013491906113bf565b60405180910390f35b6101456103bd565b604051610152919061153c565b60405180910390f35b610175600480360381019061017091906110fe565b6103c7565b60405161018291906113bf565b60405180910390f35b6101936104c8565b6040516101a09190611557565b60405180910390f35b6101c360048036038101906101be9190611191565b6104d1565b6040516101d091906113bf565b60405180910390f35b6101f360048036038101906101ee9190611091565b61057d565b604051610200919061153c565b60405180910390f35b610223600480360381019061021e9190611091565b6105c5565b005b61022d610685565b60405161023a91906113a4565b60405180910390f35b61024b6106af565b60405161025891906113da565b60405180910390f35b61027b60048036038101906102769190611191565b610741565b60405161028891906113bf565b60405180910390f35b6102ab60048036038101906102a69190611191565b610835565b6040516102b891906113bf565b60405180910390f35b6102db60048036038101906102d691906110be565b610853565b6040516102e8919061153c565b60405180910390f35b61030b60048036038101906103069190611151565b6108da565b005b60606003805461031c906116a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610348906116a0565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b60006103b36103ac610b18565b8484610b20565b6001905092915050565b6000600254905090565b60006103d4848484610ceb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061041f610b18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561049f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104969061145c565b60405180910390fd5b6104bc856104ab610b18565b85846104b791906115e4565b610b20565b60019150509392505050565b60006012905090565b60006105736104de610b18565b8484600160006104ec610b18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461056e919061158e565b610b20565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105cd610b18565b73ffffffffffffffffffffffffffffffffffffffff166105eb610685565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106389061147c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106be906116a0565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea906116a0565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b5050505050905090565b60008060016000610750610b18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561080d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610804906114fc565b60405180910390fd5b61082a610818610b18565b85858461082591906115e4565b610b20565b600191505092915050565b6000610849610842610b18565b8484610ceb565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108e2610b18565b73ffffffffffffffffffffffffffffffffffffffff16610900610685565b73ffffffffffffffffffffffffffffffffffffffff1614610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d9061147c565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a189061151c565b60405180910390fd5b610a2d60008383610f6a565b8060026000828254610a3f919061158e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a94919061158e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1673a221af4a429b734abb1cc53fbd0c1d0fa47e149473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0c919061153c565b60405180910390a35050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b87906114bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf79061141c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cde919061153c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d529061149c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc2906113fc565b60405180910390fd5b610dd6838383610f6a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e539061143c565b60405180910390fd5b8181610e6891906115e4565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef8919061158e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f5c919061153c565b60405180910390a350505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104d57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611043906114dc565b60405180910390fd5b5b505050565b600081359050611061816119ea565b92915050565b60008135905061107681611a01565b92915050565b60008135905061108b81611a18565b92915050565b6000602082840312156110a7576110a6611730565b5b60006110b584828501611052565b91505092915050565b600080604083850312156110d5576110d4611730565b5b60006110e385828601611052565b92505060206110f485828601611052565b9150509250929050565b60008060006060848603121561111757611116611730565b5b600061112586828701611052565b935050602061113686828701611052565b92505060406111478682870161107c565b9150509250925092565b6000806040838503121561116857611167611730565b5b600061117685828601611052565b925050602061118785828601611067565b9150509250929050565b600080604083850312156111a8576111a7611730565b5b60006111b685828601611052565b92505060206111c78582860161107c565b9150509250929050565b6111da81611618565b82525050565b6111e98161162a565b82525050565b60006111fa82611572565b611204818561157d565b935061121481856020860161166d565b61121d81611735565b840191505092915050565b600061123560238361157d565b915061124082611746565b604082019050919050565b600061125860228361157d565b915061126382611795565b604082019050919050565b600061127b60268361157d565b9150611286826117e4565b604082019050919050565b600061129e60288361157d565b91506112a982611833565b604082019050919050565b60006112c160208361157d565b91506112cc82611882565b602082019050919050565b60006112e460258361157d565b91506112ef826118ab565b604082019050919050565b600061130760248361157d565b9150611312826118fa565b604082019050919050565b600061132a60148361157d565b915061133582611949565b602082019050919050565b600061134d60258361157d565b915061135882611972565b604082019050919050565b6000611370601f8361157d565b915061137b826119c1565b602082019050919050565b61138f81611656565b82525050565b61139e81611660565b82525050565b60006020820190506113b960008301846111d1565b92915050565b60006020820190506113d460008301846111e0565b92915050565b600060208201905081810360008301526113f481846111ef565b905092915050565b6000602082019050818103600083015261141581611228565b9050919050565b600060208201905081810360008301526114358161124b565b9050919050565b600060208201905081810360008301526114558161126e565b9050919050565b6000602082019050818103600083015261147581611291565b9050919050565b60006020820190508181036000830152611495816112b4565b9050919050565b600060208201905081810360008301526114b5816112d7565b9050919050565b600060208201905081810360008301526114d5816112fa565b9050919050565b600060208201905081810360008301526114f58161131d565b9050919050565b6000602082019050818103600083015261151581611340565b9050919050565b6000602082019050818103600083015261153581611363565b9050919050565b60006020820190506115516000830184611386565b92915050565b600060208201905061156c6000830184611395565b92915050565b600081519050919050565b600082825260208201905092915050565b600061159982611656565b91506115a483611656565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156115d9576115d86116d2565b5b828201905092915050565b60006115ef82611656565b91506115fa83611656565b92508282101561160d5761160c6116d2565b5b828203905092915050565b600061162382611636565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561168b578082015181840152602081019050611670565b8381111561169a576000848401525b50505050565b600060028204905060018216806116b857607f821691505b602082108114156116cc576116cb611701565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f736f6d657468696e672077656e742077726f6e67000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6119f381611618565b81146119fe57600080fd5b50565b611a0a8161162a565b8114611a1557600080fd5b50565b611a2181611656565b8114611a2c57600080fd5b5056fea264697066735822122099d335cc0b80ec0877a031b0ac4fa94729f4d478322bc941f70297d572078f7764736f6c63430008070033