diff --git a/src/abi/cipherbomb.json b/src/abi/cipherbomb.json index 66d05a1..d0cd6a9 100644 --- a/src/abi/cipherbomb.json +++ b/src/abi/cipherbomb.json @@ -576,8 +576,8 @@ "type": "function" } ], - "bytecode": "0x6101606040523480156200001257600080fd5b506040518060400160405280601381526020017f417574686f72697a6174696f6e20746f6b656e00000000000000000000000000815250604051806040016040528060018152602001603160f81b81525081816200007f620000796200015060201b60201c565b62000154565b6200008c826001620001a4565b610120526200009d816002620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250506003805460ff191690556200014a620001dd565b620005fb565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620001c457620001bc8362000260565b9050620001d7565b81620001d1848262000476565b5060ff90505b92915050565b60038054600a80546201000062ffffff199182161790915516620101001790556200020b60046000620003a2565b6003805463ff00000019169055620002356200022f6000546001600160a01b031690565b620002ac565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b600080829050601f8151111562000297578260405163305a27a960e01b81526004016200028e919062000542565b60405180910390fd5b8051620002a48262000592565b179392505050565b80600160005b60035460ff6301000000909104811690821610156200031957826001600160a01b031660048260ff1660068110620002ee57620002ee620005b7565b01546001600160a01b0316036200030457600091505b806200031081620005cd565b915050620002b2565b50806200032557600080fd5b60035483906004906301000000900460ff16600681106200034a576200034a620005b7565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806200038483620005cd565b91906101000a81548160ff021916908360ff16021790555050505050565b50620003b3906006810190620003b6565b50565b5b80821115620003cd5760008155600101620003b7565b5090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047157600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b5050505b505050565b81516001600160401b03811115620004925762000492620003d1565b620004aa81620004a38454620003e7565b8462000423565b602080601f831160018114620004e25760008415620004c95750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051357888601518255948401946001909101908401620004f2565b5085821015620005325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620005715785810183015185820160400152820162000553565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200041d5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103620005f257634e487b7160e01b600052601160045260246000fd5b60010192915050565b60805160a05160c05160e05161010051610120516101405161399862000656600039600061157b01526000611550015260006126f2015260006126ca015260006126250152600061264f0152600061267901526139986000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613283565b610404565b6040516101f491906132fc565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613351565b61049e565b610249610244366004613351565b6106fb565b6040516101f4919061339d565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613283565b610b80565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611256565b6102a961126a565b600a5461021190610100900460ff1681565b610309611542565b6040516101f497969594939291906133ea565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613283565b6115cb565b610364611678565b6040516101f49190613480565b6102a96117c8565b600a546102689062010000900460ff1681565b6102a96118c1565b6102a96103a23660046134c7565b611a2c565b600a546102119060ff1681565b6102a9611a86565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613283565b611b24565b6103316103f7366004613509565b611bb1565b6102a9611bd1565b6012602052600090815260409020805461041d90613522565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613522565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff16600681106105435761054361355c565b01546001600160a01b03160361055857600191505b8061056281613588565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c4f565b905060006106528284611c82565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611ca6565b9b9a5050505050505050505050565b610703613239565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a061355c565b01546001600160a01b0316036107b557600191505b806107bf81613588565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c82565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611ca6565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611ca6565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611ca6565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610af390610ae190600160b81b900460ff1660016135a7565b6003546301000000900460ff16611cb9565b905060005b8151811015610b7c5760018251610b0f91906135c0565b8103610b3a57818181518110610b2757610b2761355c565b6020026020010151601181905550610b6a565b818181518110610b4c57610b4c61355c565b6020026020010151600b8260068110610b6757610b6761355c565b01555b80610b74816135d3565b915050610af8565b5050565b600354610100900460ff16158015610b9a575060035460ff165b610be05760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c105750600a5462010000900460ff16155b610c5c5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cbf5760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610ce757600080fd5b336001600160a01b03831603610cfc57600080fd5b6000610d10610d09611ddb565b6005611dec565b6001600160a01b03841660009081526014602052604081206003015491925090610d7390610d4290849060ff16611e0f565b6001600160a01b0386166000908152601460205260409020600301548490610d6e90829060ff16611e32565b611e55565b6001600160a01b03851660009081526014602052604081206001015491925090610dcd90610da19083611e6a565b6001600160a01b038716600090815260146020526040902060010154610dc8908590611e8d565b611ebf565b6001600160a01b03861660009081526014602052604081205491925090610e2090610df9906001611ed3565b6001600160a01b038816600090815260146020526040902060010154610dc8908690611ef6565b9050610e7a82610e59601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611e32565b6001600160a01b038916600090815260146020526040902060010154611e55565b6001600160a01b038716600090815260146020526040902060018082019290925554610ec9918391610eab91611e32565b6001600160a01b038916600090815260146020526040902054611e55565b6001600160a01b038716600090815260146020526040902055610f16610eef8284611f28565b6001600160a01b038816600090815260146020526040902060020154610d6e816001611e32565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f499060019060ff166135ec565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f8560025b60ff16611f37565b9050610f9b83610f956000610f7d565b83611e55565b9050610fab82610f956001610f7d565b600a805491925061010090910460ff16906001610fc783613588565b91906101000a81548160ff021916908360ff160217905550506000610feb82611f44565b905060001960ff821601611059577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161103f906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161104f611f4f565b5050505050505050565b60ff81166110df57600a8054600160b81b900460ff1690601761107b8361361b565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110df576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161104f611f4f565b600354600a54630100000090910460ff90811661010090920416036111e357600a805460ff1690600061111183613588565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611197577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161103f9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61125e611f61565b6112686000611fbb565b565b600354610100900460ff16158015611284575060035460ff165b6112ca5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166113225760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600061132e600161200b565b905060005b60035460ff6301000000909104811690821610156114bd5760006113576000611f37565b905060005b600a5460ff600160b81b909104811690821610156113b8576113a48261139f61139c600b8560ff16600681106113945761139461355c565b015487611ed3565b90565b61202d565b9150806113b081613588565b91505061135c565b5060006113ca61139c60115485611ed3565b905060006113eb6113dc610f7d612039565b6113e6858561202d565b61204d565b905060006113f7612039565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff16600681106114375761143761355c565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff9092169190911790556114a486610dc8611497878761202d565b61149f612039565b612059565b95505050505080806114b590613588565b915050611333565b506114c78161207c565b600a8054620100009215830262ff00001990911617908190550460ff1615611515576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115767f0000000000000000000000000000000000000000000000000000000000000000600161208f565b6115a17f0000000000000000000000000000000000000000000000000000000000000000600261208f565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115e5575060035460ff16155b6116285760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611630611f61565b6116398161213a565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611695575060035460ff165b6116db5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff81111561170357611703613638565b60405190808252806020026020018201604052801561172c578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117c257600060048260ff16600681106117625761176261355c565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061179d5761179d61355c565b60ff9092166020928302919091019091015250806117ba81613588565b915050611732565b50905090565b600354610100900460ff1680156117e2575060035460ff16155b6118255760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118825760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61188b33612357565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118db575060035460ff16155b61191e5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561197c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b0390911692909202919091179055611a0161243f565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a4682848361369c565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a7a9392919061375d565b60405180910390a15050565b600354610100900460ff168015611aa0575060035460ff16155b611ae35760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611aeb611f61565b611af43361213a565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b969906020016118b7565b611b2c611f61565b6001600160a01b038116611ba85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61153f81611fbb565b60048160068110611bc157600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bfd60046000613260565b6003805463ff00000019169055611c24611c1f6000546001600160a01b031690565b612357565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c7c611c5c612618565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c918585612743565b91509150611c9e81612788565b509392505050565b6060611cb283836128d2565b9392505050565b606060078260ff1610611ccb57600080fd5b60008360ff1667ffffffffffffffff811115611ce957611ce9613638565b604051908082528060200260200182016040528015611d12578160200160208202803683370190505b5090506000611d1f612941565b90506000611d2c8561294d565b905060005b8660ff168160ff161015611dd0576000611d5f611d5a85611d52868661379c565b60ff1661297a565b6129a0565b905060006001611d708560026138a3565b611d7a91906135c0565b9050611d8e82611d8983611f37565b6129ad565b9150611d9a82896129dd565b868460ff1681518110611daf57611daf61355c565b60200260200101818152505050508080611dc890613588565b915050611d31565b509195945050505050565b6000611de760006129f7565b905090565b600082611e0057611dfd6000611f37565b92505b611cb2838360ff166001612a69565b600082611e2357611e206000611f37565b92505b611cb2838360ff166001612b03565b600082611e4657611e436000611f37565b92505b611cb2838360ff166001612b57565b6000611e62848484612bab565b949350505050565b600082611e7e57611e7b6000611f37565b92505b611cb2838360ff166001612d0f565b600082611ea157611e9e6000611f37565b92505b81611eb357611eb06000611f37565b91505b611cb283836000612b03565b6000611cb2611ece84846129ad565b612d63565b600082611ee757611ee46000611f37565b92505b611cb2838360ff166001612d70565b600082611f0a57611f076000611f37565b92505b81611f1c57611f196000611f37565b91505b611cb283836000612d70565b6000611cb2611ece8484612dc4565b6000611c7c826000612df4565b6000611c7c82612e6d565b6003805460ff19169055611268611bd1565b6000546001600160a01b031633146112685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561202057611c7c611ece6001611f37565b611c7c611ece6000611f37565b6000611cb28383612e95565b600a54600090611de79060ff1660056135ec565b6000611cb28383612ec7565b60008261206d5761206a6000611f37565b92505b611cb2838360ff166001612ef9565b600061208782612e6d565b151592915050565b606060ff83146120a9576120a283612f4d565b9050611c7c565b8180546120b590613522565b80601f01602080910402602001604051908101604052809291908181526020018280546120e190613522565b801561212e5780601f106121035761010080835404028352916020019161212e565b820191906000526020600020905b81548152906001019060200180831161211157829003601f168201915b50505050509050611c7c565b806000805b60035460ff63010000009091048116908216101561219e57826001600160a01b031660048260ff16600681106121775761217761355c565b01546001600160a01b03160361218c57600191505b8061219681613588565b91505061213f565b50806121ec5760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561231e57846001600160a01b0316600482600681106122165761221661355c565b01546001600160a01b0316036122ab57600481600681106122395761223961355c565b0180546001600160a01b031916905560046122558260016138b2565b600681106122655761226561355c565b01546001600160a01b0316600482600681106122835761228361355c565b0180546001600160a01b0319166001600160a01b03929092169190911790556001915061230c565b811561230c5760046122be8260016138b2565b600681106122ce576122ce61355c565b01546001600160a01b0316600482600681106122ec576122ec61355c565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6123176001826138b2565b90506121f0565b50600380546301000000900460ff1690806123388361361b565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff6301000000909104811690821610156123bc57826001600160a01b031660048260ff16600681106123955761239561355c565b01546001600160a01b0316036123aa57600091505b806123b481613588565b91505061235d565b50806123c757600080fd5b60035483906004906301000000900460ff16600681106123e9576123e961355c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff16908061242183613588565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff166124975760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006002905060006124d98260038054906101000a900460ff1660ff16600414610ae1576003546124d4906001906301000000900460ff166135ec565b611cb9565b9050600460038054906101000a900460ff1660ff16111561255357600061253c6125378360008151811061250f5761250f61355c565b60200260200101518460018151811061252a5761252a61355c565b6020026020010151611ef6565b61207c565b905080156125515761254c61243f565b505050565b505b60005b60035460ff6301000000909104811690821610156126075760006125bb612597846000815181106125895761258961355c565b602002602001015184612f8c565b610dc8856001815181106125ad576125ad61355c565b602002602001015185612f8c565b9050806013600060048560ff16600681106125d8576125d861355c565b01546001600160a01b0316815260208101919091526040016000205550806125ff81613588565b915050612556565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561267157507f000000000000000000000000000000000000000000000000000000000000000046145b1561269b57507f000000000000000000000000000000000000000000000000000000000000000090565b611de7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127795760208301516040840151606085015160001a61276d87828585612faf565b94509450505050612781565b506000905060025b9250929050565b600081600481111561279c5761279c613605565b036127a45750565b60018160048111156127b8576127b8613605565b036128055760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b600281600481111561281957612819613605565b036128665760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b600381600481111561287a5761287a613605565b0361153f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612919573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cb291908101906138c5565b6000611de760026129f7565b60006001600360ff8416111561296557506003611c7c565b60018360ff161115611c7c5750600292915050565b60008261298e5761298b6000613073565b92505b611cb2838363ffffffff166001612a69565b6000611c7c826000613080565b6000826129c1576129be6000611f37565b92505b816129d3576129d06000611f37565b91505b611cb283836130bc565b6000611cb26129ec8484611e0f565b84610d6e8686611e32565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c9190613972565b6000808215612a7d5750600160f81b612a81565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afa9190613972565b95945050505050565b6000808215612b175750600160f81b612b1b565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612ab9565b6000808215612b6b5750600160f81b612b6f565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612ab9565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1f9190613972565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190613972565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d059190613972565b9695505050505050565b6000808215612d235750600160f81b612d27565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612ab9565b6000611c7c826000612f8c565b6000808215612d845750600160f81b612d88565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612ab9565b600082612dd857612dd56000611f37565b92505b81612dea57612de76000611f37565b91505b611cb28383613131565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190613972565b6040516301693b9160e61b815260048101829052600090605d90635a4ee44090602401612a28565b600082612ea957612ea66000611f37565b92505b81612ebb57612eb86000611f37565b91505b611cb283836000613169565b600082612edb57612ed86000611f37565b92505b81612eed57612eea6000611f37565b91505b611cb283836000612b57565b6000808215612f0d5750600160f81b612f11565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612ab9565b60606000612f5a836131bd565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612fa057612f9d6000611f37565b92505b611cb2838360ff1660016131e5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fe6575060009050600361306a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561303a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130635760006001925092505061306a565b9150600090505b94509492505050565b6000611c7c826002612df4565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e2c565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa15801561310d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e629190613972565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130f0565b600080821561317d5750600160f81b613181565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612ab9565b600060ff8216601f811115611c7c57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131f95750600160f81b6131fd565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612ab9565b60405180606001604052806003905b60608152602001906001900390816132485790505090565b5061153f9060068101905b8082111561327f576000815560010161326b565b5090565b60006020828403121561329557600080fd5b81356001600160a01b0381168114611cb257600080fd5b60005b838110156132c75781810151838201526020016132af565b50506000910152565b600081518084526132e88160208601602086016132ac565b601f01601f19169290920160200192915050565b602081526000611cb260208301846132d0565b60008083601f84011261332157600080fd5b50813567ffffffffffffffff81111561333957600080fd5b60208301915083602082850101111561278157600080fd5b60008060006040848603121561336657600080fd5b83359250602084013567ffffffffffffffff81111561338457600080fd5b6133908682870161330f565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133de57601f198785030183526133cc8483516132d0565b935091840191908401906001016133af565b50919695505050505050565b60ff60f81b881681526000602060e08184015261340a60e084018a6132d0565b838103604085015261341c818a6132d0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561346e57835183529284019291840191600101613452565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134bb57835160ff168352928401929184019160010161349c565b50909695505050505050565b600080602083850312156134da57600080fd5b823567ffffffffffffffff8111156134f157600080fd5b6134fd8582860161330f565b90969095509350505050565b60006020828403121561351b57600080fd5b5035919050565b600181811c9082168061353657607f821691505b60208210810361355657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361359e5761359e613572565b60010192915050565b60ff8181168382160190811115611c7c57611c7c613572565b81810381811115611c7c57611c7c613572565b6000600182016135e5576135e5613572565b5060010190565b60ff8281168282160390811115611c7c57611c7c613572565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061362e5761362e613572565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561254c57600081815260208120601f850160051c810160208610156136755750805b601f850160051c820191505b8181101561369457828155600101613681565b505050505050565b67ffffffffffffffff8311156136b4576136b4613638565b6136c8836136c28354613522565b8361364e565b6000601f8411600181146136fc57600085156136e45750838201355b600019600387901b1c1916600186901b178355613756565b600083815260209020601f19861690835b8281101561372d578685013582556020948501946001909201910161370d565b508682101561374a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60ff81811683821602908116908181146137b8576137b8613572565b5092915050565b600181815b808511156137fa5781600019048211156137e0576137e0613572565b808516156137ed57918102915b93841c93908002906137c4565b509250929050565b60008261381157506001611c7c565b8161381e57506000611c7c565b8160018114613834576002811461383e5761385a565b6001915050611c7c565b60ff84111561384f5761384f613572565b50506001821b611c7c565b5060208310610133831016604e8410600b841016171561387d575081810a611c7c565b61388783836137bf565b806000190482111561389b5761389b613572565b029392505050565b6000611cb260ff841683613802565b80820180821115611c7c57611c7c613572565b6000602082840312156138d757600080fd5b815167ffffffffffffffff808211156138ef57600080fd5b818401915084601f83011261390357600080fd5b81518181111561391557613915613638565b604051601f8201601f19908116603f0116810190838211818310171561393d5761393d613638565b8160405282815287602084870101111561395657600080fd5b6139678360208301602088016132ac565b979650505050505050565b60006020828403121561398457600080fd5b505191905056fea164736f6c6343000813000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613283565b610404565b6040516101f491906132fc565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613351565b61049e565b610249610244366004613351565b6106fb565b6040516101f4919061339d565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613283565b610b80565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611256565b6102a961126a565b600a5461021190610100900460ff1681565b610309611542565b6040516101f497969594939291906133ea565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613283565b6115cb565b610364611678565b6040516101f49190613480565b6102a96117c8565b600a546102689062010000900460ff1681565b6102a96118c1565b6102a96103a23660046134c7565b611a2c565b600a546102119060ff1681565b6102a9611a86565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613283565b611b24565b6103316103f7366004613509565b611bb1565b6102a9611bd1565b6012602052600090815260409020805461041d90613522565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613522565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff16600681106105435761054361355c565b01546001600160a01b03160361055857600191505b8061056281613588565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c4f565b905060006106528284611c82565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611ca6565b9b9a5050505050505050505050565b610703613239565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a061355c565b01546001600160a01b0316036107b557600191505b806107bf81613588565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c82565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611ca6565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611ca6565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611ca6565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610af390610ae190600160b81b900460ff1660016135a7565b6003546301000000900460ff16611cb9565b905060005b8151811015610b7c5760018251610b0f91906135c0565b8103610b3a57818181518110610b2757610b2761355c565b6020026020010151601181905550610b6a565b818181518110610b4c57610b4c61355c565b6020026020010151600b8260068110610b6757610b6761355c565b01555b80610b74816135d3565b915050610af8565b5050565b600354610100900460ff16158015610b9a575060035460ff165b610be05760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c105750600a5462010000900460ff16155b610c5c5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cbf5760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610ce757600080fd5b336001600160a01b03831603610cfc57600080fd5b6000610d10610d09611ddb565b6005611dec565b6001600160a01b03841660009081526014602052604081206003015491925090610d7390610d4290849060ff16611e0f565b6001600160a01b0386166000908152601460205260409020600301548490610d6e90829060ff16611e32565b611e55565b6001600160a01b03851660009081526014602052604081206001015491925090610dcd90610da19083611e6a565b6001600160a01b038716600090815260146020526040902060010154610dc8908590611e8d565b611ebf565b6001600160a01b03861660009081526014602052604081205491925090610e2090610df9906001611ed3565b6001600160a01b038816600090815260146020526040902060010154610dc8908690611ef6565b9050610e7a82610e59601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611e32565b6001600160a01b038916600090815260146020526040902060010154611e55565b6001600160a01b038716600090815260146020526040902060018082019290925554610ec9918391610eab91611e32565b6001600160a01b038916600090815260146020526040902054611e55565b6001600160a01b038716600090815260146020526040902055610f16610eef8284611f28565b6001600160a01b038816600090815260146020526040902060020154610d6e816001611e32565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f499060019060ff166135ec565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f8560025b60ff16611f37565b9050610f9b83610f956000610f7d565b83611e55565b9050610fab82610f956001610f7d565b600a805491925061010090910460ff16906001610fc783613588565b91906101000a81548160ff021916908360ff160217905550506000610feb82611f44565b905060001960ff821601611059577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161103f906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161104f611f4f565b5050505050505050565b60ff81166110df57600a8054600160b81b900460ff1690601761107b8361361b565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110df576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161104f611f4f565b600354600a54630100000090910460ff90811661010090920416036111e357600a805460ff1690600061111183613588565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611197577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161103f9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61125e611f61565b6112686000611fbb565b565b600354610100900460ff16158015611284575060035460ff165b6112ca5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166113225760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600061132e600161200b565b905060005b60035460ff6301000000909104811690821610156114bd5760006113576000611f37565b905060005b600a5460ff600160b81b909104811690821610156113b8576113a48261139f61139c600b8560ff16600681106113945761139461355c565b015487611ed3565b90565b61202d565b9150806113b081613588565b91505061135c565b5060006113ca61139c60115485611ed3565b905060006113eb6113dc610f7d612039565b6113e6858561202d565b61204d565b905060006113f7612039565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff16600681106114375761143761355c565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff9092169190911790556114a486610dc8611497878761202d565b61149f612039565b612059565b95505050505080806114b590613588565b915050611333565b506114c78161207c565b600a8054620100009215830262ff00001990911617908190550460ff1615611515576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115767f0000000000000000000000000000000000000000000000000000000000000000600161208f565b6115a17f0000000000000000000000000000000000000000000000000000000000000000600261208f565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115e5575060035460ff16155b6116285760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611630611f61565b6116398161213a565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611695575060035460ff165b6116db5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff81111561170357611703613638565b60405190808252806020026020018201604052801561172c578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117c257600060048260ff16600681106117625761176261355c565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061179d5761179d61355c565b60ff9092166020928302919091019091015250806117ba81613588565b915050611732565b50905090565b600354610100900460ff1680156117e2575060035460ff16155b6118255760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118825760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61188b33612357565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118db575060035460ff16155b61191e5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561197c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b0390911692909202919091179055611a0161243f565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a4682848361369c565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a7a9392919061375d565b60405180910390a15050565b600354610100900460ff168015611aa0575060035460ff16155b611ae35760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611aeb611f61565b611af43361213a565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b969906020016118b7565b611b2c611f61565b6001600160a01b038116611ba85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61153f81611fbb565b60048160068110611bc157600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bfd60046000613260565b6003805463ff00000019169055611c24611c1f6000546001600160a01b031690565b612357565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c7c611c5c612618565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c918585612743565b91509150611c9e81612788565b509392505050565b6060611cb283836128d2565b9392505050565b606060078260ff1610611ccb57600080fd5b60008360ff1667ffffffffffffffff811115611ce957611ce9613638565b604051908082528060200260200182016040528015611d12578160200160208202803683370190505b5090506000611d1f612941565b90506000611d2c8561294d565b905060005b8660ff168160ff161015611dd0576000611d5f611d5a85611d52868661379c565b60ff1661297a565b6129a0565b905060006001611d708560026138a3565b611d7a91906135c0565b9050611d8e82611d8983611f37565b6129ad565b9150611d9a82896129dd565b868460ff1681518110611daf57611daf61355c565b60200260200101818152505050508080611dc890613588565b915050611d31565b509195945050505050565b6000611de760006129f7565b905090565b600082611e0057611dfd6000611f37565b92505b611cb2838360ff166001612a69565b600082611e2357611e206000611f37565b92505b611cb2838360ff166001612b03565b600082611e4657611e436000611f37565b92505b611cb2838360ff166001612b57565b6000611e62848484612bab565b949350505050565b600082611e7e57611e7b6000611f37565b92505b611cb2838360ff166001612d0f565b600082611ea157611e9e6000611f37565b92505b81611eb357611eb06000611f37565b91505b611cb283836000612b03565b6000611cb2611ece84846129ad565b612d63565b600082611ee757611ee46000611f37565b92505b611cb2838360ff166001612d70565b600082611f0a57611f076000611f37565b92505b81611f1c57611f196000611f37565b91505b611cb283836000612d70565b6000611cb2611ece8484612dc4565b6000611c7c826000612df4565b6000611c7c82612e6d565b6003805460ff19169055611268611bd1565b6000546001600160a01b031633146112685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561202057611c7c611ece6001611f37565b611c7c611ece6000611f37565b6000611cb28383612e95565b600a54600090611de79060ff1660056135ec565b6000611cb28383612ec7565b60008261206d5761206a6000611f37565b92505b611cb2838360ff166001612ef9565b600061208782612e6d565b151592915050565b606060ff83146120a9576120a283612f4d565b9050611c7c565b8180546120b590613522565b80601f01602080910402602001604051908101604052809291908181526020018280546120e190613522565b801561212e5780601f106121035761010080835404028352916020019161212e565b820191906000526020600020905b81548152906001019060200180831161211157829003601f168201915b50505050509050611c7c565b806000805b60035460ff63010000009091048116908216101561219e57826001600160a01b031660048260ff16600681106121775761217761355c565b01546001600160a01b03160361218c57600191505b8061219681613588565b91505061213f565b50806121ec5760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561231e57846001600160a01b0316600482600681106122165761221661355c565b01546001600160a01b0316036122ab57600481600681106122395761223961355c565b0180546001600160a01b031916905560046122558260016138b2565b600681106122655761226561355c565b01546001600160a01b0316600482600681106122835761228361355c565b0180546001600160a01b0319166001600160a01b03929092169190911790556001915061230c565b811561230c5760046122be8260016138b2565b600681106122ce576122ce61355c565b01546001600160a01b0316600482600681106122ec576122ec61355c565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6123176001826138b2565b90506121f0565b50600380546301000000900460ff1690806123388361361b565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff6301000000909104811690821610156123bc57826001600160a01b031660048260ff16600681106123955761239561355c565b01546001600160a01b0316036123aa57600091505b806123b481613588565b91505061235d565b50806123c757600080fd5b60035483906004906301000000900460ff16600681106123e9576123e961355c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff16908061242183613588565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff166124975760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006002905060006124d98260038054906101000a900460ff1660ff16600414610ae1576003546124d4906001906301000000900460ff166135ec565b611cb9565b9050600460038054906101000a900460ff1660ff16111561255357600061253c6125378360008151811061250f5761250f61355c565b60200260200101518460018151811061252a5761252a61355c565b6020026020010151611ef6565b61207c565b905080156125515761254c61243f565b505050565b505b60005b60035460ff6301000000909104811690821610156126075760006125bb612597846000815181106125895761258961355c565b602002602001015184612f8c565b610dc8856001815181106125ad576125ad61355c565b602002602001015185612f8c565b9050806013600060048560ff16600681106125d8576125d861355c565b01546001600160a01b0316815260208101919091526040016000205550806125ff81613588565b915050612556565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561267157507f000000000000000000000000000000000000000000000000000000000000000046145b1561269b57507f000000000000000000000000000000000000000000000000000000000000000090565b611de7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127795760208301516040840151606085015160001a61276d87828585612faf565b94509450505050612781565b506000905060025b9250929050565b600081600481111561279c5761279c613605565b036127a45750565b60018160048111156127b8576127b8613605565b036128055760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b600281600481111561281957612819613605565b036128665760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b600381600481111561287a5761287a613605565b0361153f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612919573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cb291908101906138c5565b6000611de760026129f7565b60006001600360ff8416111561296557506003611c7c565b60018360ff161115611c7c5750600292915050565b60008261298e5761298b6000613073565b92505b611cb2838363ffffffff166001612a69565b6000611c7c826000613080565b6000826129c1576129be6000611f37565b92505b816129d3576129d06000611f37565b91505b611cb283836130bc565b6000611cb26129ec8484611e0f565b84610d6e8686611e32565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c9190613972565b6000808215612a7d5750600160f81b612a81565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afa9190613972565b95945050505050565b6000808215612b175750600160f81b612b1b565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612ab9565b6000808215612b6b5750600160f81b612b6f565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612ab9565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1f9190613972565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190613972565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d059190613972565b9695505050505050565b6000808215612d235750600160f81b612d27565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612ab9565b6000611c7c826000612f8c565b6000808215612d845750600160f81b612d88565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612ab9565b600082612dd857612dd56000611f37565b92505b81612dea57612de76000611f37565b91505b611cb28383613131565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190613972565b6040516301693b9160e61b815260048101829052600090605d90635a4ee44090602401612a28565b600082612ea957612ea66000611f37565b92505b81612ebb57612eb86000611f37565b91505b611cb283836000613169565b600082612edb57612ed86000611f37565b92505b81612eed57612eea6000611f37565b91505b611cb283836000612b57565b6000808215612f0d5750600160f81b612f11565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612ab9565b60606000612f5a836131bd565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612fa057612f9d6000611f37565b92505b611cb2838360ff1660016131e5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fe6575060009050600361306a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561303a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130635760006001925092505061306a565b9150600090505b94509492505050565b6000611c7c826002612df4565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e2c565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa15801561310d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e629190613972565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130f0565b600080821561317d5750600160f81b613181565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612ab9565b600060ff8216601f811115611c7c57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131f95750600160f81b6131fd565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612ab9565b60405180606001604052806003905b60608152602001906001900390816132485790505090565b5061153f9060068101905b8082111561327f576000815560010161326b565b5090565b60006020828403121561329557600080fd5b81356001600160a01b0381168114611cb257600080fd5b60005b838110156132c75781810151838201526020016132af565b50506000910152565b600081518084526132e88160208601602086016132ac565b601f01601f19169290920160200192915050565b602081526000611cb260208301846132d0565b60008083601f84011261332157600080fd5b50813567ffffffffffffffff81111561333957600080fd5b60208301915083602082850101111561278157600080fd5b60008060006040848603121561336657600080fd5b83359250602084013567ffffffffffffffff81111561338457600080fd5b6133908682870161330f565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133de57601f198785030183526133cc8483516132d0565b935091840191908401906001016133af565b50919695505050505050565b60ff60f81b881681526000602060e08184015261340a60e084018a6132d0565b838103604085015261341c818a6132d0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561346e57835183529284019291840191600101613452565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134bb57835160ff168352928401929184019160010161349c565b50909695505050505050565b600080602083850312156134da57600080fd5b823567ffffffffffffffff8111156134f157600080fd5b6134fd8582860161330f565b90969095509350505050565b60006020828403121561351b57600080fd5b5035919050565b600181811c9082168061353657607f821691505b60208210810361355657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361359e5761359e613572565b60010192915050565b60ff8181168382160190811115611c7c57611c7c613572565b81810381811115611c7c57611c7c613572565b6000600182016135e5576135e5613572565b5060010190565b60ff8281168282160390811115611c7c57611c7c613572565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061362e5761362e613572565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561254c57600081815260208120601f850160051c810160208610156136755750805b601f850160051c820191505b8181101561369457828155600101613681565b505050505050565b67ffffffffffffffff8311156136b4576136b4613638565b6136c8836136c28354613522565b8361364e565b6000601f8411600181146136fc57600085156136e45750838201355b600019600387901b1c1916600186901b178355613756565b600083815260209020601f19861690835b8281101561372d578685013582556020948501946001909201910161370d565b508682101561374a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60ff81811683821602908116908181146137b8576137b8613572565b5092915050565b600181815b808511156137fa5781600019048211156137e0576137e0613572565b808516156137ed57918102915b93841c93908002906137c4565b509250929050565b60008261381157506001611c7c565b8161381e57506000611c7c565b8160018114613834576002811461383e5761385a565b6001915050611c7c565b60ff84111561384f5761384f613572565b50506001821b611c7c565b5060208310610133831016604e8410600b841016171561387d575081810a611c7c565b61388783836137bf565b806000190482111561389b5761389b613572565b029392505050565b6000611cb260ff841683613802565b80820180821115611c7c57611c7c613572565b6000602082840312156138d757600080fd5b815167ffffffffffffffff808211156138ef57600080fd5b818401915084601f83011261390357600080fd5b81518181111561391557613915613638565b604051601f8201601f19908116603f0116810190838211818310171561393d5761393d613638565b8160405282815287602084870101111561395657600080fd5b6139678360208301602088016132ac565b979650505050505050565b60006020828403121561398457600080fd5b505191905056fea164736f6c6343000813000a", + "bytecode": "0x6101606040523480156200001257600080fd5b506040518060400160405280601381526020017f417574686f72697a6174696f6e20746f6b656e00000000000000000000000000815250604051806040016040528060018152602001603160f81b81525081816200007f620000796200015060201b60201c565b62000154565b6200008c826001620001a4565b610120526200009d816002620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250506003805460ff191690556200014a620001dd565b620005fb565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620001c457620001bc8362000260565b9050620001d7565b81620001d1848262000476565b5060ff90505b92915050565b60038054600a80546201000062ffffff199182161790915516620101001790556200020b60046000620003a2565b6003805463ff00000019169055620002356200022f6000546001600160a01b031690565b620002ac565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b600080829050601f8151111562000297578260405163305a27a960e01b81526004016200028e919062000542565b60405180910390fd5b8051620002a48262000592565b179392505050565b80600160005b60035460ff6301000000909104811690821610156200031957826001600160a01b031660048260ff1660068110620002ee57620002ee620005b7565b01546001600160a01b0316036200030457600091505b806200031081620005cd565b915050620002b2565b50806200032557600080fd5b60035483906004906301000000900460ff16600681106200034a576200034a620005b7565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806200038483620005cd565b91906101000a81548160ff021916908360ff16021790555050505050565b50620003b3906006810190620003b6565b50565b5b80821115620003cd5760008155600101620003b7565b5090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047157600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b5050505b505050565b81516001600160401b03811115620004925762000492620003d1565b620004aa81620004a38454620003e7565b8462000423565b602080601f831160018114620004e25760008415620004c95750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051357888601518255948401946001909101908401620004f2565b5085821015620005325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620005715785810183015185820160400152820162000553565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200041d5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103620005f257634e487b7160e01b600052601160045260246000fd5b60010192915050565b60805160a05160c05160e05161010051610120516101405161396862000656600039600061154b01526000611520015260006126b901526000612691015260006125ec015260006126160152600061264001526139686000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613253565b610404565b6040516101f491906132cc565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613321565b61049e565b610249610244366004613321565b6106fb565b6040516101f4919061336d565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613253565b610b80565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611226565b6102a961123a565b600a5461021190610100900460ff1681565b610309611512565b6040516101f497969594939291906133ba565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613253565b61159b565b610364611648565b6040516101f49190613450565b6102a9611798565b600a546102689062010000900460ff1681565b6102a9611891565b6102a96103a2366004613497565b6119fc565b600a546102119060ff1681565b6102a9611a56565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613253565b611af4565b6103316103f73660046134d9565b611b81565b6102a9611ba1565b6012602052600090815260409020805461041d906134f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906134f2565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff16600681106105435761054361352c565b01546001600160a01b03160361055857600191505b8061056281613558565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c1f565b905060006106528284611c52565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c76565b9b9a5050505050505050505050565b610703613209565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a061352c565b01546001600160a01b0316036107b557600191505b806107bf81613558565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c52565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c76565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c76565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c76565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610af390610ae190600160b81b900460ff166001613577565b6003546301000000900460ff16611c89565b905060005b8151811015610b7c5760018251610b0f9190613590565b8103610b3a57818181518110610b2757610b2761352c565b6020026020010151601181905550610b6a565b818181518110610b4c57610b4c61352c565b6020026020010151600b8260068110610b6757610b6761352c565b01555b80610b74816135a3565b915050610af8565b5050565b600354610100900460ff16158015610b9a575060035460ff165b610be05760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c105750600a5462010000900460ff16155b610c5c5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cbf5760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610ce757600080fd5b336001600160a01b03831603610cfc57600080fd5b6000610d10610d09611dab565b6005611dbc565b6001600160a01b03841660009081526014602052604081206003015491925090610d3e90839060ff16611ddf565b6001600160a01b03851660009081526014602052604081206001015491925090610d9890610d6c9083611df9565b6001600160a01b038716600090815260146020526040902060010154610d93908590611e1c565b611e4e565b6001600160a01b03861660009081526014602052604081205491925090610deb90610dc4906001611e62565b6001600160a01b038816600090815260146020526040902060010154610d93908690611e85565b9050610e4582610e24601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611eb7565b6001600160a01b038916600090815260146020526040902060010154611eda565b6001600160a01b038716600090815260146020526040902060018082019290925554610e94918391610e7691611eb7565b6001600160a01b038916600090815260146020526040902054611eda565b6001600160a01b038716600090815260146020526040902055610ee6610eba8284611eef565b6001600160a01b038816600090815260146020526040902060020154610ee1816001611eb7565b611eda565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f199060019060ff166135bc565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f5560025b60ff16611efe565b9050610f6b83610f656000610f4d565b83611eda565b9050610f7b82610f656001610f4d565b600a805491925061010090910460ff16906001610f9783613558565b91906101000a81548160ff021916908360ff160217905550506000610fbb82611f0b565b905060001960ff821601611029577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161100f906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161101f611f16565b5050505050505050565b60ff81166110af57600a8054600160b81b900460ff1690601761104b836135eb565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110af576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161101f611f16565b600354600a54630100000090910460ff90811661010090920416036111b357600a805460ff169060006110e183613558565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611167577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161100f9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61122e611f28565b6112386000611f82565b565b600354610100900460ff16158015611254575060035460ff165b61129a5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166112f25760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006112fe6001611fd2565b905060005b60035460ff63010000009091048116908216101561148d5760006113276000611efe565b905060005b600a5460ff600160b81b90910481169082161015611388576113748261136f61136c600b8560ff16600681106113645761136461352c565b015487611e62565b90565b611ff4565b91508061138081613558565b91505061132c565b50600061139a61136c60115485611e62565b905060006113bb6113ac610f4d612000565b6113b68585611ff4565b612014565b905060006113c7612000565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff16600681106114075761140761352c565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff90921691909117905561147486610d936114678787611ff4565b61146f612000565b612020565b955050505050808061148590613558565b915050611303565b5061149781612043565b600a8054620100009215830262ff00001990911617908190550460ff16156114e5576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115467f00000000000000000000000000000000000000000000000000000000000000006001612056565b6115717f00000000000000000000000000000000000000000000000000000000000000006002612056565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115b5575060035460ff16155b6115f85760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611600611f28565b61160981612101565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611665575060035460ff165b6116ab5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116d3576116d3613608565b6040519080825280602002602001820160405280156116fc578160200160208202803683370190505b50905060005b60035460ff63010000009091048116908216101561179257600060048260ff16600681106117325761173261352c565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061176d5761176d61352c565b60ff90921660209283029190910190910152508061178a81613558565b915050611702565b50905090565b600354610100900460ff1680156117b2575060035460ff16155b6117f55760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118525760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61185b3361231e565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118ab575060035460ff16155b6118ee5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561194c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119d1612406565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a1682848361366c565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a4a9392919061372d565b60405180910390a15050565b600354610100900460ff168015611a70575060035460ff16155b611ab35760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611abb611f28565b611ac433612101565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b96990602001611887565b611afc611f28565b6001600160a01b038116611b785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61150f81611f82565b60048160068110611b9157600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bcd60046000613230565b6003805463ff00000019169055611bf4611bef6000546001600160a01b031690565b61231e565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c4c611c2c6125df565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c61858561270a565b91509150611c6e8161274f565b509392505050565b6060611c828383612899565b9392505050565b606060078260ff1610611c9b57600080fd5b60008360ff1667ffffffffffffffff811115611cb957611cb9613608565b604051908082528060200260200182016040528015611ce2578160200160208202803683370190505b5090506000611cef612908565b90506000611cfc85612914565b905060005b8660ff168160ff161015611da0576000611d2f611d2a85611d22868661376c565b60ff16612941565b612967565b905060006001611d40856002613873565b611d4a9190613590565b9050611d5e82611d5983611efe565b612974565b9150611d6a8289611ddf565b868460ff1681518110611d7f57611d7f61352c565b60200260200101818152505050508080611d9890613558565b915050611d01565b509195945050505050565b6000611db760006129a4565b905090565b600082611dd057611dcd6000611efe565b92505b611c82838360ff166001612a16565b6000611c82611dee8484612ab0565b84610ee18686611eb7565b600082611e0d57611e0a6000611efe565b92505b611c82838360ff166001612ad3565b600082611e3057611e2d6000611efe565b92505b81611e4257611e3f6000611efe565b91505b611c8283836000612b27565b6000611c82611e5d8484612974565b612b7b565b600082611e7657611e736000611efe565b92505b611c82838360ff166001612b88565b600082611e9957611e966000611efe565b92505b81611eab57611ea86000611efe565b91505b611c8283836000612b88565b600082611ecb57611ec86000611efe565b92505b611c82838360ff166001612bdc565b6000611ee7848484612c30565b949350505050565b6000611c82611e5d8484612d94565b6000611c4c826000612dc4565b6000611c4c82612e3d565b6003805460ff19169055611238611ba1565b6000546001600160a01b031633146112385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008115611fe757611c4c611e5d6001611efe565b611c4c611e5d6000611efe565b6000611c828383612e65565b600a54600090611db79060ff1660056135bc565b6000611c828383612e97565b600082612034576120316000611efe565b92505b611c82838360ff166001612ec9565b600061204e82612e3d565b151592915050565b606060ff83146120705761206983612f1d565b9050611c4c565b81805461207c906134f2565b80601f01602080910402602001604051908101604052809291908181526020018280546120a8906134f2565b80156120f55780601f106120ca576101008083540402835291602001916120f5565b820191906000526020600020905b8154815290600101906020018083116120d857829003601f168201915b50505050509050611c4c565b806000805b60035460ff63010000009091048116908216101561216557826001600160a01b031660048260ff166006811061213e5761213e61352c565b01546001600160a01b03160361215357600191505b8061215d81613558565b915050612106565b50806121b35760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b60068110156122e557846001600160a01b0316600482600681106121dd576121dd61352c565b01546001600160a01b03160361227257600481600681106122005761220061352c565b0180546001600160a01b0319169055600461221c826001613882565b6006811061222c5761222c61352c565b01546001600160a01b03166004826006811061224a5761224a61352c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600191506122d3565b81156122d3576004612285826001613882565b600681106122955761229561352c565b01546001600160a01b0316600482600681106122b3576122b361352c565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6122de600182613882565b90506121b7565b50600380546301000000900460ff1690806122ff836135eb565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561238357826001600160a01b031660048260ff166006811061235c5761235c61352c565b01546001600160a01b03160361237157600091505b8061237b81613558565b915050612324565b508061238e57600080fd5b60035483906004906301000000900460ff16600681106123b0576123b061352c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806123e883613558565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff1661245e5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006002905060006124a08260038054906101000a900460ff1660ff16600414610ae15760035461249b906001906301000000900460ff166135bc565b611c89565b9050600460038054906101000a900460ff1660ff16111561251a5760006125036124fe836000815181106124d6576124d661352c565b6020026020010151846001815181106124f1576124f161352c565b6020026020010151611e85565b612043565b9050801561251857612513612406565b505050565b505b60005b60035460ff6301000000909104811690821610156125ce57600061258261255e846000815181106125505761255061352c565b602002602001015184612f5c565b610d93856001815181106125745761257461352c565b602002602001015185612f5c565b9050806013600060048560ff166006811061259f5761259f61352c565b01546001600160a01b0316815260208101919091526040016000205550806125c681613558565b91505061251d565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561263857507f000000000000000000000000000000000000000000000000000000000000000046145b1561266257507f000000000000000000000000000000000000000000000000000000000000000090565b611db7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127405760208301516040840151606085015160001a61273487828585612f7f565b94509450505050612748565b506000905060025b9250929050565b6000816004811115612763576127636135d5565b0361276b5750565b600181600481111561277f5761277f6135d5565b036127cc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b60028160048111156127e0576127e06135d5565b0361282d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b6003816004811115612841576128416135d5565b0361150f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa1580156128e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c829190810190613895565b6000611db760026129a4565b60006001600360ff8416111561292c57506003611c4c565b60018360ff161115611c4c5750600292915050565b600082612955576129526000613043565b92505b611c82838363ffffffff166001612a16565b6000611c4c826000613050565b600082612988576129856000611efe565b92505b8161299a576129976000611efe565b91505b611c82838361308c565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa1580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c9190613942565b6000808215612a2a5750600160f81b612a2e565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa79190613942565b95945050505050565b600082612ac457612ac16000611efe565b92505b611c82838360ff166001612b27565b6000808215612ae75750600160f81b612aeb565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612a66565b6000808215612b3b5750600160f81b612b3f565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612a66565b6000611c4c826000612f5c565b6000808215612b9c5750600160f81b612ba0565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612a66565b6000808215612bf05750600160f81b612bf4565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612a66565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca49190613942565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190613942565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8a9190613942565b9695505050505050565b600082612da857612da56000611efe565b92505b81612dba57612db76000611efe565b91505b611c828383613101565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c829190613942565b6040516301693b9160e61b815260048101829052600090605d90635a4ee440906024016129d5565b600082612e7957612e766000611efe565b92505b81612e8b57612e886000611efe565b91505b611c8283836000613139565b600082612eab57612ea86000611efe565b92505b81612ebd57612eba6000611efe565b91505b611c8283836000612bdc565b6000808215612edd5750600160f81b612ee1565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612a66565b60606000612f2a8361318d565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612f7057612f6d6000611efe565b92505b611c82838360ff1660016131b5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fb6575060009050600361303a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561300a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130335760006001925092505061303a565b9150600090505b94509492505050565b6000611c4c826002612dc4565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612dfc565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa1580156130dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee79190613942565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130c0565b600080821561314d5750600160f81b613151565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612a66565b600060ff8216601f811115611c4c57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131c95750600160f81b6131cd565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612a66565b60405180606001604052806003905b60608152602001906001900390816132185790505090565b5061150f9060068101905b8082111561324f576000815560010161323b565b5090565b60006020828403121561326557600080fd5b81356001600160a01b0381168114611c8257600080fd5b60005b8381101561329757818101518382015260200161327f565b50506000910152565b600081518084526132b881602086016020860161327c565b601f01601f19169290920160200192915050565b602081526000611c8260208301846132a0565b60008083601f8401126132f157600080fd5b50813567ffffffffffffffff81111561330957600080fd5b60208301915083602082850101111561274857600080fd5b60008060006040848603121561333657600080fd5b83359250602084013567ffffffffffffffff81111561335457600080fd5b613360868287016132df565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133ae57601f1987850301835261339c8483516132a0565b9350918401919084019060010161337f565b50919695505050505050565b60ff60f81b881681526000602060e0818401526133da60e084018a6132a0565b83810360408501526133ec818a6132a0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561343e57835183529284019291840191600101613422565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561348b57835160ff168352928401929184019160010161346c565b50909695505050505050565b600080602083850312156134aa57600080fd5b823567ffffffffffffffff8111156134c157600080fd5b6134cd858286016132df565b90969095509350505050565b6000602082840312156134eb57600080fd5b5035919050565b600181811c9082168061350657607f821691505b60208210810361352657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361356e5761356e613542565b60010192915050565b60ff8181168382160190811115611c4c57611c4c613542565b81810381811115611c4c57611c4c613542565b6000600182016135b5576135b5613542565b5060010190565b60ff8281168282160390811115611c4c57611c4c613542565b634e487b7160e01b600052602160045260246000fd5b600060ff8216806135fe576135fe613542565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561251357600081815260208120601f850160051c810160208610156136455750805b601f850160051c820191505b8181101561366457828155600101613651565b505050505050565b67ffffffffffffffff83111561368457613684613608565b6136988361369283546134f2565b8361361e565b6000601f8411600181146136cc57600085156136b45750838201355b600019600387901b1c1916600186901b178355613726565b600083815260209020601f19861690835b828110156136fd57868501358255602094850194600190920191016136dd565b508682101561371a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60ff818116838216029081169081811461378857613788613542565b5092915050565b600181815b808511156137ca5781600019048211156137b0576137b0613542565b808516156137bd57918102915b93841c9390800290613794565b509250929050565b6000826137e157506001611c4c565b816137ee57506000611c4c565b8160018114613804576002811461380e5761382a565b6001915050611c4c565b60ff84111561381f5761381f613542565b50506001821b611c4c565b5060208310610133831016604e8410600b841016171561384d575081810a611c4c565b613857838361378f565b806000190482111561386b5761386b613542565b029392505050565b6000611c8260ff8416836137d2565b80820180821115611c4c57611c4c613542565b6000602082840312156138a757600080fd5b815167ffffffffffffffff808211156138bf57600080fd5b818401915084601f8301126138d357600080fd5b8151818111156138e5576138e5613608565b604051601f8201601f19908116603f0116810190838211818310171561390d5761390d613608565b8160405282815287602084870101111561392657600080fd5b61393783602083016020880161327c565b979650505050505050565b60006020828403121561395457600080fd5b505191905056fea164736f6c6343000813000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613253565b610404565b6040516101f491906132cc565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613321565b61049e565b610249610244366004613321565b6106fb565b6040516101f4919061336d565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613253565b610b80565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611226565b6102a961123a565b600a5461021190610100900460ff1681565b610309611512565b6040516101f497969594939291906133ba565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613253565b61159b565b610364611648565b6040516101f49190613450565b6102a9611798565b600a546102689062010000900460ff1681565b6102a9611891565b6102a96103a2366004613497565b6119fc565b600a546102119060ff1681565b6102a9611a56565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613253565b611af4565b6103316103f73660046134d9565b611b81565b6102a9611ba1565b6012602052600090815260409020805461041d906134f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906134f2565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff16600681106105435761054361352c565b01546001600160a01b03160361055857600191505b8061056281613558565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c1f565b905060006106528284611c52565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c76565b9b9a5050505050505050505050565b610703613209565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a061352c565b01546001600160a01b0316036107b557600191505b806107bf81613558565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c52565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c76565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c76565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c76565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610af390610ae190600160b81b900460ff166001613577565b6003546301000000900460ff16611c89565b905060005b8151811015610b7c5760018251610b0f9190613590565b8103610b3a57818181518110610b2757610b2761352c565b6020026020010151601181905550610b6a565b818181518110610b4c57610b4c61352c565b6020026020010151600b8260068110610b6757610b6761352c565b01555b80610b74816135a3565b915050610af8565b5050565b600354610100900460ff16158015610b9a575060035460ff165b610be05760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c105750600a5462010000900460ff16155b610c5c5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cbf5760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610ce757600080fd5b336001600160a01b03831603610cfc57600080fd5b6000610d10610d09611dab565b6005611dbc565b6001600160a01b03841660009081526014602052604081206003015491925090610d3e90839060ff16611ddf565b6001600160a01b03851660009081526014602052604081206001015491925090610d9890610d6c9083611df9565b6001600160a01b038716600090815260146020526040902060010154610d93908590611e1c565b611e4e565b6001600160a01b03861660009081526014602052604081205491925090610deb90610dc4906001611e62565b6001600160a01b038816600090815260146020526040902060010154610d93908690611e85565b9050610e4582610e24601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611eb7565b6001600160a01b038916600090815260146020526040902060010154611eda565b6001600160a01b038716600090815260146020526040902060018082019290925554610e94918391610e7691611eb7565b6001600160a01b038916600090815260146020526040902054611eda565b6001600160a01b038716600090815260146020526040902055610ee6610eba8284611eef565b6001600160a01b038816600090815260146020526040902060020154610ee1816001611eb7565b611eda565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f199060019060ff166135bc565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f5560025b60ff16611efe565b9050610f6b83610f656000610f4d565b83611eda565b9050610f7b82610f656001610f4d565b600a805491925061010090910460ff16906001610f9783613558565b91906101000a81548160ff021916908360ff160217905550506000610fbb82611f0b565b905060001960ff821601611029577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161100f906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161101f611f16565b5050505050505050565b60ff81166110af57600a8054600160b81b900460ff1690601761104b836135eb565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110af576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161101f611f16565b600354600a54630100000090910460ff90811661010090920416036111b357600a805460ff169060006110e183613558565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611167577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161100f9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61122e611f28565b6112386000611f82565b565b600354610100900460ff16158015611254575060035460ff165b61129a5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166112f25760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006112fe6001611fd2565b905060005b60035460ff63010000009091048116908216101561148d5760006113276000611efe565b905060005b600a5460ff600160b81b90910481169082161015611388576113748261136f61136c600b8560ff16600681106113645761136461352c565b015487611e62565b90565b611ff4565b91508061138081613558565b91505061132c565b50600061139a61136c60115485611e62565b905060006113bb6113ac610f4d612000565b6113b68585611ff4565b612014565b905060006113c7612000565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff16600681106114075761140761352c565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff90921691909117905561147486610d936114678787611ff4565b61146f612000565b612020565b955050505050808061148590613558565b915050611303565b5061149781612043565b600a8054620100009215830262ff00001990911617908190550460ff16156114e5576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115467f00000000000000000000000000000000000000000000000000000000000000006001612056565b6115717f00000000000000000000000000000000000000000000000000000000000000006002612056565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115b5575060035460ff16155b6115f85760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611600611f28565b61160981612101565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611665575060035460ff165b6116ab5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116d3576116d3613608565b6040519080825280602002602001820160405280156116fc578160200160208202803683370190505b50905060005b60035460ff63010000009091048116908216101561179257600060048260ff16600681106117325761173261352c565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061176d5761176d61352c565b60ff90921660209283029190910190910152508061178a81613558565b915050611702565b50905090565b600354610100900460ff1680156117b2575060035460ff16155b6117f55760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118525760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61185b3361231e565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118ab575060035460ff16155b6118ee5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561194c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119d1612406565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a1682848361366c565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a4a9392919061372d565b60405180910390a15050565b600354610100900460ff168015611a70575060035460ff16155b611ab35760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611abb611f28565b611ac433612101565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b96990602001611887565b611afc611f28565b6001600160a01b038116611b785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61150f81611f82565b60048160068110611b9157600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bcd60046000613230565b6003805463ff00000019169055611bf4611bef6000546001600160a01b031690565b61231e565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c4c611c2c6125df565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c61858561270a565b91509150611c6e8161274f565b509392505050565b6060611c828383612899565b9392505050565b606060078260ff1610611c9b57600080fd5b60008360ff1667ffffffffffffffff811115611cb957611cb9613608565b604051908082528060200260200182016040528015611ce2578160200160208202803683370190505b5090506000611cef612908565b90506000611cfc85612914565b905060005b8660ff168160ff161015611da0576000611d2f611d2a85611d22868661376c565b60ff16612941565b612967565b905060006001611d40856002613873565b611d4a9190613590565b9050611d5e82611d5983611efe565b612974565b9150611d6a8289611ddf565b868460ff1681518110611d7f57611d7f61352c565b60200260200101818152505050508080611d9890613558565b915050611d01565b509195945050505050565b6000611db760006129a4565b905090565b600082611dd057611dcd6000611efe565b92505b611c82838360ff166001612a16565b6000611c82611dee8484612ab0565b84610ee18686611eb7565b600082611e0d57611e0a6000611efe565b92505b611c82838360ff166001612ad3565b600082611e3057611e2d6000611efe565b92505b81611e4257611e3f6000611efe565b91505b611c8283836000612b27565b6000611c82611e5d8484612974565b612b7b565b600082611e7657611e736000611efe565b92505b611c82838360ff166001612b88565b600082611e9957611e966000611efe565b92505b81611eab57611ea86000611efe565b91505b611c8283836000612b88565b600082611ecb57611ec86000611efe565b92505b611c82838360ff166001612bdc565b6000611ee7848484612c30565b949350505050565b6000611c82611e5d8484612d94565b6000611c4c826000612dc4565b6000611c4c82612e3d565b6003805460ff19169055611238611ba1565b6000546001600160a01b031633146112385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008115611fe757611c4c611e5d6001611efe565b611c4c611e5d6000611efe565b6000611c828383612e65565b600a54600090611db79060ff1660056135bc565b6000611c828383612e97565b600082612034576120316000611efe565b92505b611c82838360ff166001612ec9565b600061204e82612e3d565b151592915050565b606060ff83146120705761206983612f1d565b9050611c4c565b81805461207c906134f2565b80601f01602080910402602001604051908101604052809291908181526020018280546120a8906134f2565b80156120f55780601f106120ca576101008083540402835291602001916120f5565b820191906000526020600020905b8154815290600101906020018083116120d857829003601f168201915b50505050509050611c4c565b806000805b60035460ff63010000009091048116908216101561216557826001600160a01b031660048260ff166006811061213e5761213e61352c565b01546001600160a01b03160361215357600191505b8061215d81613558565b915050612106565b50806121b35760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b60068110156122e557846001600160a01b0316600482600681106121dd576121dd61352c565b01546001600160a01b03160361227257600481600681106122005761220061352c565b0180546001600160a01b0319169055600461221c826001613882565b6006811061222c5761222c61352c565b01546001600160a01b03166004826006811061224a5761224a61352c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600191506122d3565b81156122d3576004612285826001613882565b600681106122955761229561352c565b01546001600160a01b0316600482600681106122b3576122b361352c565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6122de600182613882565b90506121b7565b50600380546301000000900460ff1690806122ff836135eb565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561238357826001600160a01b031660048260ff166006811061235c5761235c61352c565b01546001600160a01b03160361237157600091505b8061237b81613558565b915050612324565b508061238e57600080fd5b60035483906004906301000000900460ff16600681106123b0576123b061352c565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806123e883613558565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff1661245e5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006002905060006124a08260038054906101000a900460ff1660ff16600414610ae15760035461249b906001906301000000900460ff166135bc565b611c89565b9050600460038054906101000a900460ff1660ff16111561251a5760006125036124fe836000815181106124d6576124d661352c565b6020026020010151846001815181106124f1576124f161352c565b6020026020010151611e85565b612043565b9050801561251857612513612406565b505050565b505b60005b60035460ff6301000000909104811690821610156125ce57600061258261255e846000815181106125505761255061352c565b602002602001015184612f5c565b610d93856001815181106125745761257461352c565b602002602001015185612f5c565b9050806013600060048560ff166006811061259f5761259f61352c565b01546001600160a01b0316815260208101919091526040016000205550806125c681613558565b91505061251d565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561263857507f000000000000000000000000000000000000000000000000000000000000000046145b1561266257507f000000000000000000000000000000000000000000000000000000000000000090565b611db7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127405760208301516040840151606085015160001a61273487828585612f7f565b94509450505050612748565b506000905060025b9250929050565b6000816004811115612763576127636135d5565b0361276b5750565b600181600481111561277f5761277f6135d5565b036127cc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b60028160048111156127e0576127e06135d5565b0361282d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b6003816004811115612841576128416135d5565b0361150f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa1580156128e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c829190810190613895565b6000611db760026129a4565b60006001600360ff8416111561292c57506003611c4c565b60018360ff161115611c4c5750600292915050565b600082612955576129526000613043565b92505b611c82838363ffffffff166001612a16565b6000611c4c826000613050565b600082612988576129856000611efe565b92505b8161299a576129976000611efe565b91505b611c82838361308c565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa1580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c9190613942565b6000808215612a2a5750600160f81b612a2e565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa79190613942565b95945050505050565b600082612ac457612ac16000611efe565b92505b611c82838360ff166001612b27565b6000808215612ae75750600160f81b612aeb565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612a66565b6000808215612b3b5750600160f81b612b3f565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612a66565b6000611c4c826000612f5c565b6000808215612b9c5750600160f81b612ba0565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612a66565b6000808215612bf05750600160f81b612bf4565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612a66565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca49190613942565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d189190613942565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8a9190613942565b9695505050505050565b600082612da857612da56000611efe565b92505b81612dba57612db76000611efe565b91505b611c828383613101565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c829190613942565b6040516301693b9160e61b815260048101829052600090605d90635a4ee440906024016129d5565b600082612e7957612e766000611efe565b92505b81612e8b57612e886000611efe565b91505b611c8283836000613139565b600082612eab57612ea86000611efe565b92505b81612ebd57612eba6000611efe565b91505b611c8283836000612bdc565b6000808215612edd5750600160f81b612ee1565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612a66565b60606000612f2a8361318d565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612f7057612f6d6000611efe565b92505b611c82838360ff1660016131b5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fb6575060009050600361303a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561300a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130335760006001925092505061303a565b9150600090505b94509492505050565b6000611c4c826002612dc4565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612dfc565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa1580156130dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee79190613942565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130c0565b600080821561314d5750600160f81b613151565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612a66565b600060ff8216601f811115611c4c57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131c95750600160f81b6131cd565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612a66565b60405180606001604052806003905b60608152602001906001900390816132185790505090565b5061150f9060068101905b8082111561324f576000815560010161323b565b5090565b60006020828403121561326557600080fd5b81356001600160a01b0381168114611c8257600080fd5b60005b8381101561329757818101518382015260200161327f565b50506000910152565b600081518084526132b881602086016020860161327c565b601f01601f19169290920160200192915050565b602081526000611c8260208301846132a0565b60008083601f8401126132f157600080fd5b50813567ffffffffffffffff81111561330957600080fd5b60208301915083602082850101111561274857600080fd5b60008060006040848603121561333657600080fd5b83359250602084013567ffffffffffffffff81111561335457600080fd5b613360868287016132df565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133ae57601f1987850301835261339c8483516132a0565b9350918401919084019060010161337f565b50919695505050505050565b60ff60f81b881681526000602060e0818401526133da60e084018a6132a0565b83810360408501526133ec818a6132a0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561343e57835183529284019291840191600101613422565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561348b57835160ff168352928401929184019160010161346c565b50909695505050505050565b600080602083850312156134aa57600080fd5b823567ffffffffffffffff8111156134c157600080fd5b6134cd858286016132df565b90969095509350505050565b6000602082840312156134eb57600080fd5b5035919050565b600181811c9082168061350657607f821691505b60208210810361352657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361356e5761356e613542565b60010192915050565b60ff8181168382160190811115611c4c57611c4c613542565b81810381811115611c4c57611c4c613542565b6000600182016135b5576135b5613542565b5060010190565b60ff8281168282160390811115611c4c57611c4c613542565b634e487b7160e01b600052602160045260246000fd5b600060ff8216806135fe576135fe613542565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561251357600081815260208120601f850160051c810160208610156136455750805b601f850160051c820191505b8181101561366457828155600101613651565b505050505050565b67ffffffffffffffff83111561368457613684613608565b6136988361369283546134f2565b8361361e565b6000601f8411600181146136cc57600085156136b45750838201355b600019600387901b1c1916600186901b178355613726565b600083815260209020601f19861690835b828110156136fd57868501358255602094850194600190920191016136dd565b508682101561371a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60ff818116838216029081169081811461378857613788613542565b5092915050565b600181815b808511156137ca5781600019048211156137b0576137b0613542565b808516156137bd57918102915b93841c9390800290613794565b509250929050565b6000826137e157506001611c4c565b816137ee57506000611c4c565b8160018114613804576002811461380e5761382a565b6001915050611c4c565b60ff84111561381f5761381f613542565b50506001821b611c4c565b5060208310610133831016604e8410600b841016171561384d575081810a611c4c565b613857838361378f565b806000190482111561386b5761386b613542565b029392505050565b6000611c8260ff8416836137d2565b80820180821115611c4c57611c4c613542565b6000602082840312156138a757600080fd5b815167ffffffffffffffff808211156138bf57600080fd5b818401915084601f8301126138d357600080fd5b8151818111156138e5576138e5613608565b604051601f8201601f19908116603f0116810190838211818310171561390d5761390d613608565b8160405282815287602084870101111561392657600080fd5b61393783602083016020880161327c565b979650505050505050565b60006020828403121561395457600080fd5b505191905056fea164736f6c6343000813000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/modules/common-ui/components/Connect/Connect.tsx b/src/modules/common-ui/components/Connect/Connect.tsx index f761b99..fc787b1 100644 --- a/src/modules/common-ui/components/Connect/Connect.tsx +++ b/src/modules/common-ui/components/Connect/Connect.tsx @@ -21,8 +21,10 @@ export const Connect: React.FC<{ const provider = new BrowserProvider(window.ethereum); const refreshAccounts = (accounts: string[]) => { - setAccount(getAddress(accounts[0]) || ''); + const acc = getAddress(accounts[0]) || ''; + setAccount(acc); setConnected(accounts.length > 0); + return acc; }; const hasValidNetwork = async (): Promise => { @@ -30,10 +32,10 @@ export const Connect: React.FC<{ return AUTHORIZED_CHAIN_ID.includes(currentChainId.toLowerCase()); }; - const refreshNetwork = async () => { + const refreshNetwork = async (acc: string) => { if (await hasValidNetwork()) { setValidNetwork(true); - await createFhevmInstance(account); + await createFhevmInstance(acc); } else { setValidNetwork(false); } @@ -49,8 +51,8 @@ export const Connect: React.FC<{ provider .send('eth_accounts', []) .then(async (accounts: string[]) => { - refreshAccounts(accounts); - await refreshNetwork(); + const acc = refreshAccounts(accounts); + await refreshNetwork(acc); }) .catch(() => { // Do nothing diff --git a/src/modules/game/components/Game/Game.tsx b/src/modules/game/components/Game/Game.tsx index e296f65..1e5f0cb 100644 --- a/src/modules/game/components/Game/Game.tsx +++ b/src/modules/game/components/Game/Game.tsx @@ -32,6 +32,8 @@ export const Game = ({ account, provider }: GameProps) => { await provider.getSigner(); const c = new Contract(address, abi, await provider.getSigner()); setContract(c); + const isRunning = await getReadContract(c).gameRunning(); + setGameIsRunning(isRunning); setContractLoading(false); }; @@ -136,7 +138,7 @@ export const Game = ({ account, provider }: GameProps) => { } }, [contract]); - if (!contract) { + if (!contract || contractLoading) { return
; }