0x60806040523480156200001157600080fd5b5060405162001a5d38038062001a5d833981810160405281019062000037919062000154565b601260ff16600a6200004a919062000309565b816200005791906200035a565b600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600054604051620001059190620003b6565b60405180910390a350620003d3565b600080fd5b6000819050919050565b6200012e8162000119565b81146200013a57600080fd5b50565b6000815190506200014e8162000123565b92915050565b6000602082840312156200016d576200016c62000114565b5b60006200017d848285016200013d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200021457808604811115620001ec57620001eb62000186565b5b6001851615620001fc5780820291505b80810290506200020c85620001b5565b9450620001cc565b94509492505050565b6000826200022f576001905062000302565b816200023f576000905062000302565b8160018114620002585760028114620002635762000299565b600191505062000302565b60ff84111562000278576200027762000186565b5b8360020a91508482111562000292576200029162000186565b5b5062000302565b5060208310610133831016604e8410600b8410161715620002d35782820a905083811115620002cd57620002cc62000186565b5b62000302565b620002e28484846001620001c2565b92509050818404811115620002fc57620002fb62000186565b5b81810290505b9392505050565b6000620003168262000119565b9150620003238362000119565b9250620003527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200021d565b905092915050565b6000620003678262000119565b9150620003748362000119565b9250828202620003848162000119565b915082820484148315176200039e576200039d62000186565b5b5092915050565b620003b08162000119565b82525050565b6000602082019050620003cd6000830184620003a5565b92915050565b61167a80620003e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063dd62ed3e14610288578063f968f493146102b8576100cf565b806370a08231146101be57806389158d8e146101ee57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102c2565b6040516100e99190610fc8565b60405180910390f35b61010c60048036038101906101079190611083565b6102ff565b60405161011991906110de565b60405180910390f35b61012a610316565b6040516101379190611108565b60405180910390f35b61015a60048036038101906101559190611123565b61031f565b60405161016791906110de565b60405180910390f35b610178610462565b6040516101859190611192565b60405180910390f35b6101a860048036038101906101a39190611083565b61046b565b6040516101b591906110de565b60405180910390f35b6101d860048036038101906101d391906111ad565b610509565b6040516101e59190611108565b60405180910390f35b610208600480360381019061020391906111da565b610552565b005b61021261073c565b60405161021f9190610fc8565b60405180910390f35b610242600480360381019061023d9190611083565b610779565b60405161024f91906110de565b60405180910390f35b610272600480360381019061026d9190611083565b610817565b60405161027f91906110de565b60405180910390f35b6102a2600480360381019061029d919061121a565b6108c7565b6040516102af9190611108565b60405180910390f35b6102c061094e565b005b60606040518060400160405280600c81526020017f46696e616c46616e746173790000000000000000000000000000000000000000815250905090565b600061030c338484610a5a565b6001905092915050565b60008054905090565b600061032a84610c23565b82111561036c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610363906112a6565b60405180910390fd5b60006064600a8461037d91906112f5565b6103879190611366565b9050600081846103979190611397565b90506103a4868683610d44565b6103c38673d88fa142b67f561c5f2cbf803bf5ae906a8f1e4184610d44565b610455863386600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104509190611397565b610a5a565b6001925050509392505050565b60006012905090565b60006104ff338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104fa91906113cb565b610a5a565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61055b33610c23565b82111561059d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610594906112a6565b60405180910390fd5b600082905082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062d9190611397565b036106425760018361063f9190611397565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461069191906113cb565b9250508190555081426106a491906113cb565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fd741e738a23fd18a03a26522320d9fc6cac1fed483e215ea9150fbc2fc43385d848460405161072f9291906113ff565b60405180910390a2505050565b60606040518060400160405280600281526020017f4646000000000000000000000000000000000000000000000000000000000000815250905090565b600061080d338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108089190611397565b610a5a565b6001905092915050565b600061082233610c23565b821115610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906112a6565b60405180910390fd5b60006064600a8461087591906112f5565b61087f9190611366565b90506000818461088f9190611397565b905061089c338683610d44565b6108bb3373d88fa142b67f561c5f2cbf803bf5ae906a8f1e4184610d44565b60019250505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b42600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790611474565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fcf96a7404357442bbc147c389fc2942cb6eedcaf1aad90bb8eb4b67ce43d4fb260405160405180910390a2565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac0906114e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f9061154c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c169190611108565b60405180910390a3505050565b600042600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610cb257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610d3f565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3c9190611397565b90505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa906115b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990611624565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e719190611397565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec791906113cb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f2b9190611108565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f72578082015181840152602081019050610f57565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f9a82610f38565b610fa48185610f43565b9350610fb4818560208601610f54565b610fbd81610f7e565b840191505092915050565b60006020820190508181036000830152610fe28184610f8f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061101a82610fef565b9050919050565b61102a8161100f565b811461103557600080fd5b50565b60008135905061104781611021565b92915050565b6000819050919050565b6110608161104d565b811461106b57600080fd5b50565b60008135905061107d81611057565b92915050565b6000806040838503121561109a57611099610fea565b5b60006110a885828601611038565b92505060206110b98582860161106e565b9150509250929050565b60008115159050919050565b6110d8816110c3565b82525050565b60006020820190506110f360008301846110cf565b92915050565b6111028161104d565b82525050565b600060208201905061111d60008301846110f9565b92915050565b60008060006060848603121561113c5761113b610fea565b5b600061114a86828701611038565b935050602061115b86828701611038565b925050604061116c8682870161106e565b9150509250925092565b600060ff82169050919050565b61118c81611176565b82525050565b60006020820190506111a76000830184611183565b92915050565b6000602082840312156111c3576111c2610fea565b5b60006111d184828501611038565b91505092915050565b600080604083850312156111f1576111f0610fea565b5b60006111ff8582860161106e565b92505060206112108582860161106e565b9150509250929050565b6000806040838503121561123157611230610fea565b5b600061123f85828601611038565b925050602061125085828601611038565b9150509250929050565b7f496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000600082015250565b6000611290601d83610f43565b915061129b8261125a565b602082019050919050565b600060208201905081810360008301526112bf81611283565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113008261104d565b915061130b8361104d565b92508282026113198161104d565b915082820484148315176113305761132f6112c6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006113718261104d565b915061137c8361104d565b92508261138c5761138b611337565b5b828204905092915050565b60006113a28261104d565b91506113ad8361104d565b92508282039050818111156113c5576113c46112c6565b5b92915050565b60006113d68261104d565b91506113e18361104d565b92508282019050808211156113f9576113f86112c6565b5b92915050565b600060408201905061141460008301856110f9565b61142160208301846110f9565b9392505050565b7f546f6b656e7320617265207374696c6c206c6f636b6564000000000000000000600082015250565b600061145e601783610f43565b915061146982611428565b602082019050919050565b6000602082019050818103600083015261148d81611451565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b60006114ca601d83610f43565b91506114d582611494565b602082019050919050565b600060208201905081810360008301526114f9816114bd565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000611536601b83610f43565b915061154182611500565b602082019050919050565b6000602082019050818103600083015261156581611529565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006115a2601e83610f43565b91506115ad8261156c565b602082019050919050565b600060208201905081810360008301526115d181611595565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b600061160e601c83610f43565b9150611619826115d8565b602082019050919050565b6000602082019050818103600083015261163d81611601565b905091905056fea26469706673582212206e1a2a3865dd856aad19fb376777779ada073b97cde84a5246997bf9348bac2b64736f6c63430008120033000000000000000000000000000000000000000000000000000000002e5bf271