0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801562000043575f80fd5b50620000546200005a60201b60201c565b620001c4565b5f6200006b6200015e60201b60201c565b9050805f0160089054906101000a900460ff1615620000b6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200015b5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001529190620001a9565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001a38162000185565b82525050565b5f602082019050620001be5f83018462000198565b92915050565b608051611a32620001eb5f395f8181610a6501528181610aba0152610c740152611a325ff3fe6080604052600436106100e0575f3560e01c80638129fc1c1161007e5780639ca069f3116100585780639ca069f314610243578063ad3cb1cc1461025f578063e30c397814610289578063f2fde38b146102b3576100e7565b80638129fc1c146101d9578063876f06a8146101ef5780638da5cb5b14610219576100e7565b806352d1902d116100ba57806352d1902d146101595780635c975abb14610183578063715018a6146101ad57806379ba5097146101c3576100e7565b80631aab3474146100eb57806320c2b225146101155780634f1ef2861461013d576100e7565b366100e757005b5f80fd5b3480156100f6575f80fd5b506100ff6102db565b60405161010c91906112cd565b60405180910390f35b348015610120575f80fd5b5061013b6004803603810190610136919061137b565b6102e4565b005b6101576004803603810190610152919061152e565b610489565b005b348015610164575f80fd5b5061016d6104a8565b60405161017a91906115a0565b60405180910390f35b34801561018e575f80fd5b506101976104d9565b6040516101a491906115d3565b60405180910390f35b3480156101b8575f80fd5b506101c16104ed565b005b3480156101ce575f80fd5b506101d7610500565b005b3480156101e4575f80fd5b506101ed61058e565b005b3480156101fa575f80fd5b5061020361071e565b60405161021091906112cd565b60405180910390f35b348015610224575f80fd5b5061022d610724565b60405161023a91906115fb565b60405180910390f35b61025d60048036038101906102589190611671565b610759565b005b34801561026a575f80fd5b506102736108b5565b604051610280919061176f565b60405180910390f35b348015610294575f80fd5b5061029d6108ee565b6040516102aa91906115fb565b60405180910390f35b3480156102be575f80fd5b506102d960048036038101906102d4919061178f565b610923565b005b5f603254905090565b6102ec6109dc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103be578373ffffffffffffffffffffffffffffffffffffffff166108fc8690811502906040515f60405180830381858888f19350505050158015610362573d5f803e3d5ffd5b503373ffffffffffffffffffffffffffffffffffffffff167f239bcfa377ed947a63d1c31f1c524814474d4e5b85bd3b220fefa081f10fe31985878686866040516103b19594939291906117ba565b60405180910390a2610482565b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86886040518363ffffffff1660e01b81526004016103fd92919061180b565b5f604051808303815f87803b158015610414575f80fd5b505af1158015610426573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f239bcfa377ed947a63d1c31f1c524814474d4e5b85bd3b220fefa081f10fe31986888787876040516104789594939291906117ba565b60405180910390a2505b5050505050565b610491610a63565b61049a82610b49565b6104a48282610b54565b5050565b5f6104b1610c72565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f805f9054906101000a900460ff16905090565b6104f56109dc565b6104fe5f610cf9565b565b5f610509610d36565b90508073ffffffffffffffffffffffffffffffffffffffff1661052a6108ee565b73ffffffffffffffffffffffffffffffffffffffff161461058257806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161057991906115fb565b60405180910390fd5b61058b81610cf9565b50565b5f610597610d3d565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156105df5750825b90505f60018367ffffffffffffffff1614801561061257505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610620575080155b15610657576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156106a4576001855f0160086101000a81548160ff0219169083151502179055505b6106ad33610d64565b6106b5610de8565b6106bd610e0a565b8315610717575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161070e9190611887565b60405180910390a15b5050505050565b60325481565b5f8061072e610e14565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f8190505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ec573373ffffffffffffffffffffffffffffffffffffffff167f02249bcd475470316a06ddaa849c4b0cf7f56167c0b8bda7fc803aa024c099f786863487876040516107de9594939291906118cc565b60405180910390a2506108ae565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff1660e01b815260040161082993929190611918565b5f604051808303815f87803b158015610840575f80fd5b505af1158015610852573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f02249bcd475470316a06ddaa849c4b0cf7f56167c0b8bda7fc803aa024c099f786868987876040516108a49594939291906118cc565b60405180910390a2505b5050505050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f806108f8610e3b565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b61092b6109dc565b5f610934610e3b565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16610996610724565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6109e4610d36565b73ffffffffffffffffffffffffffffffffffffffff16610a02610724565b73ffffffffffffffffffffffffffffffffffffffff1614610a6157610a25610d36565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a5891906115fb565b60405180910390fd5b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480610b1057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610af7610e62565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610b47576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610b516109dc565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bbc57506040513d601f19601f82011682018060405250810190610bb99190611977565b60015b610bfd57816040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610bf491906115fb565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b8114610c6357806040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600401610c5a91906115a0565b60405180910390fd5b610c6d8383610eb5565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610d02610e3b565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055610d3282610f27565b5050565b5f33905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b610d6c610ff8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ddc575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610dd391906115fb565b60405180910390fd5b610de581610cf9565b50565b610df0610ff8565b5f805f6101000a81548160ff021916908315150217905550565b610e12610ff8565b565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f610e8e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611038565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebe82611041565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115610f1a57610f14828261110a565b50610f23565b610f2261118a565b5b5050565b5f610f30610e14565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6110006111c6565b611036576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361109c57806040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161109391906115fb565b60405180910390fd5b806110c87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611038565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405161113391906119e6565b5f60405180830381855af49150503d805f811461116b576040519150601f19603f3d011682016040523d82523d5f602084013e611170565b606091505b50915091506111808583836111e4565b9250505092915050565b5f3411156111c4576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6111cf610d3d565b5f0160089054906101000a900460ff16905090565b6060826111f9576111f482611271565b611269565b5f825114801561121f57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561126157836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161125891906115fb565b60405180910390fd5b81905061126a565b5b9392505050565b5f815111156112835780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f819050919050565b6112c7816112b5565b82525050565b5f6020820190506112e05f8301846112be565b92915050565b5f604051905090565b5f80fd5b5f80fd5b611300816112b5565b811461130a575f80fd5b50565b5f8135905061131b816112f7565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61134a82611321565b9050919050565b61135a81611340565b8114611364575f80fd5b50565b5f8135905061137581611351565b92915050565b5f805f805f60a08688031215611394576113936112ef565b5b5f6113a18882890161130d565b95505060206113b288828901611367565b94505060406113c38882890161130d565b93505060606113d48882890161130d565b92505060806113e588828901611367565b9150509295509295909350565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611440826113fa565b810181811067ffffffffffffffff8211171561145f5761145e61140a565b5b80604052505050565b5f6114716112e6565b905061147d8282611437565b919050565b5f67ffffffffffffffff82111561149c5761149b61140a565b5b6114a5826113fa565b9050602081019050919050565b828183375f83830152505050565b5f6114d26114cd84611482565b611468565b9050828152602081018484840111156114ee576114ed6113f6565b5b6114f98482856114b2565b509392505050565b5f82601f830112611515576115146113f2565b5b81356115258482602086016114c0565b91505092915050565b5f8060408385031215611544576115436112ef565b5b5f61155185828601611367565b925050602083013567ffffffffffffffff811115611572576115716112f3565b5b61157e85828601611501565b9150509250929050565b5f819050919050565b61159a81611588565b82525050565b5f6020820190506115b35f830184611591565b92915050565b5f8115159050919050565b6115cd816115b9565b82525050565b5f6020820190506115e65f8301846115c4565b92915050565b6115f581611340565b82525050565b5f60208201905061160e5f8301846115ec565b92915050565b5f80fd5b5f80fd5b5f8083601f840112611631576116306113f2565b5b8235905067ffffffffffffffff81111561164e5761164d611614565b5b60208301915083600182028301111561166a57611669611618565b5b9250929050565b5f805f805f6080868803121561168a576116896112ef565b5b5f6116978882890161130d565b955050602086013567ffffffffffffffff8111156116b8576116b76112f3565b5b6116c48882890161161c565b945094505060406116d78882890161130d565b92505060606116e888828901611367565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561172c578082015181840152602081019050611711565b5f8484015250505050565b5f611741826116f5565b61174b81856116ff565b935061175b81856020860161170f565b611764816113fa565b840191505092915050565b5f6020820190508181035f8301526117878184611737565b905092915050565b5f602082840312156117a4576117a36112ef565b5b5f6117b184828501611367565b91505092915050565b5f60a0820190506117cd5f8301886115ec565b6117da60208301876112be565b6117e760408301866112be565b6117f460608301856112be565b61180160808301846115ec565b9695505050505050565b5f60408201905061181e5f8301856115ec565b61182b60208301846112be565b9392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61187161186c61186784611832565b61184e565b61183b565b9050919050565b61188181611857565b82525050565b5f60208201905061189a5f830184611878565b92915050565b5f6118ab83856116ff565b93506118b88385846114b2565b6118c1836113fa565b840190509392505050565b5f6080820190508181035f8301526118e58187896118a0565b90506118f460208301866112be565b61190160408301856112be565b61190e60608301846115ec565b9695505050505050565b5f60608201905061192b5f8301866115ec565b61193860208301856115ec565b61194560408301846112be565b949350505050565b61195681611588565b8114611960575f80fd5b50565b5f815190506119718161194d565b92915050565b5f6020828403121561198c5761198b6112ef565b5b5f61199984828501611963565b91505092915050565b5f81519050919050565b5f81905092915050565b5f6119c0826119a2565b6119ca81856119ac565b93506119da81856020860161170f565b80840191505092915050565b5f6119f182846119b6565b91508190509291505056fea264697066735822122004574bfbd9873bc8714967c92c61d7a4f909016180ad89a6c411b564af43854e64736f6c63430008140033