[ { "inputs": [ { "internalType": "uint32", "name": "_morpheusMintingStartTimestamp", "type": "uint32" }, { "internalType": "uint32", "name": "_morpheusBuyAndBurnStartTimestamp", "type": "uint32" }, { "internalType": "address", "name": "_dragonXTitanXPool", "type": "address" }, { "internalType": "address", "name": "_titanX", "type": "address" }, { "internalType": "address", "name": "_dragonX", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "payable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "InvalidInput", "type": "error" }, { "inputs": [], "name": "OnlyBuyAndBurn", "type": "error" }, { "inputs": [], "name": "OnlyMinting", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyAndBurn", "outputs": [ { "internalType": "contract MorpheusBuyAndBurn", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dragonX", "type": "address" }, { "internalType": "address", "name": "_dragonXTitanXPool", "type": "address" }, { "internalType": "uint256", "name": "_dragonxReceived", "type": "uint256" } ], "name": "createDragonXMorpheusPool", "outputs": [ { "internalType": "address", "name": "_dragonXMorpheusPool", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dragonXMorpheusPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintTokensForLP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minting", "outputs": [ { "internalType": "contract MorpheusMinting", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60c06040526040516159fe3803806159fe83398101604081905261002291610199565b604051806040016040528060088152602001674d6f72706865757360c01b8152506040518060400160405280600581526020016409a9ea4a0960db1b815250816003908161007091906102a1565b50600461007d82826102a1565b505050848484848460405161009190610151565b63ffffffff90951685526001600160a01b03938416602086015291831660408501528216606084015216608082015260a001604051809103905ff0801580156100dc573d5f803e3d5ffd5b506001600160a01b031660a0819052604051849088906100fb9061015e565b6001600160a01b03938416815292909116602083015263ffffffff166040820152606001604051809103905ff080158015610138573d5f803e3d5ffd5b506001600160a01b03166080525061035b945050505050565b61359f8061121e83390190565b611241806147bd83390190565b805163ffffffff8116811461017e575f80fd5b919050565b80516001600160a01b038116811461017e575f80fd5b5f805f805f8060c087890312156101ae575f80fd5b6101b78761016b565b95506101c56020880161016b565b94506101d360408801610183565b93506101e160608801610183565b92506101ef60808801610183565b91506101fd60a08801610183565b90509295509295509295565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061023157607f821691505b60208210810361024f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029c57805f5260205f20601f840160051c8101602085101561027a5750805b601f840160051c820191505b81811015610299575f8155600101610286565b50505b505050565b81516001600160401b038111156102ba576102ba610209565b6102ce816102c8845461021d565b84610255565b6020601f821160018114610300575f83156102e95750848201515b5f19600385901b1c1916600184901b178455610299565b5f84815260208120601f198516915b8281101561032f578785015182556020948501946001909201910161030f565b508482101561034c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a051610e8d6103915f395f818161025c0152818161061301526107fe01525f8181610212015261074d0152610e8d5ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c806370a082311161009e5780639bed7b6c1161006e5780639bed7b6c1461023c578063a9059cbb14610244578063aa6df29914610257578063dd62ed3e1461027e578063e80c20e0146102b6575f80fd5b806370a08231146101d257806379cc6790146101fa5780637dc2268c1461020d57806395d89b4114610234575f80fd5b8063313ce567116100d9578063313ce5671461017057806340c10f191461017f57806342966c68146101945780636b8f2eae146101a7575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd1461015d575b5f80fd5b6101126102c9565b60405161011f9190610bc7565b60405180910390f35b61013b610136366004610c10565b610359565b604051901515815260200161011f565b6002545b60405190815260200161011f565b61013b61016b366004610c3a565b610372565b6040516012815260200161011f565b61019261018d366004610c10565b610395565b005b6101926101a2366004610c78565b6103ab565b6101ba6101b5366004610c3a565b6103b8565b6040516001600160a01b03909116815260200161011f565b61014f6101e0366004610c8f565b6001600160a01b03165f9081526020819052604090205490565b610192610208366004610c10565b6105e2565b6101ba7f000000000000000000000000000000000000000000000000000000000000000081565b6101126105f7565b610192610606565b61013b610252366004610c10565b610646565b6101ba7f000000000000000000000000000000000000000000000000000000000000000081565b61014f61028c366004610caa565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546101ba906001600160a01b031681565b6060600380546102d890610ce1565b80601f016020809104026020016040519081016040528092919081815260200182805461030490610ce1565b801561034f5780601f106103265761010080835404028352916020019161034f565b820191905f5260205f20905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b5f33610366818585610653565b60019150505b92915050565b5f3361037f858285610665565b61038a8585856106e5565b506001949350505050565b61039d610742565b6103a7828261078b565b5050565b6103b533826107bf565b50565b5f6103c16107f3565b5f3090505f846001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104269190610d2f565b50505050505090505f80836001600160a01b0316886001600160a01b031610610450578388610453565b87845b9092509050856ba18f07d736b90be5500000005f806001600160a01b03808716908d1614610482578284610485565b83835b9092509050633b9aca006104b4836104a584670de0b6b3a7640000610ddf565b6104af9190610e0a565b61083c565b6104c290600160601b610ddf565b6104cc9190610e0a565b6040516309f56ab160e11b81526001600160a01b038089166004830152808816602483015261271060448301528216606482015290975073c36442b4a4522e871399cd717abdd847ab11fe889081906313ead562906084016020604051808303815f875af1158015610540573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105649190610e29565b600580546001600160a01b0319166001600160a01b039290921691821790556040516332148f6760e01b815260646004820152909a508a906332148f67906024015f604051808303815f87803b1580156105bc575f80fd5b505af11580156105ce573d5f803e3d5ffd5b505050505050505050505050509392505050565b6105ed823383610665565b6103a782826107bf565b6060600480546102d890610ce1565b61060e6107f3565b6106447f00000000000000000000000000000000000000000000000000000000000000006ba18f07d736b90be55000000061078b565b565b5f336103668185856106e5565b6106608383836001610927565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146106df57818110156106d157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b6106df84848484035f610927565b50505050565b6001600160a01b03831661070e57604051634b637e8f60e11b81525f60048201526024016106c8565b6001600160a01b0382166107375760405163ec442f0560e01b81525f60048201526024016106c8565b6106608383836109f9565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106445760405163c004a90b60e01b815260040160405180910390fd5b6001600160a01b0382166107b45760405163ec442f0560e01b81525f60048201526024016106c8565b6103a75f83836109f9565b6001600160a01b0382166107e857604051634b637e8f60e11b81525f60048201526024016106c8565b6103a7825f836109f9565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461064457604051633579266f60e11b815260040160405180910390fd5b5f815f0361084b57505f919050565b5f600161085784610b1f565b901c6001901b9050600181848161087057610870610df6565b048201901c9050600181848161088857610888610df6565b048201901c905060018184816108a0576108a0610df6565b048201901c905060018184816108b8576108b8610df6565b048201901c905060018184816108d0576108d0610df6565b048201901c905060018184816108e8576108e8610df6565b048201901c9050600181848161090057610900610df6565b048201901c90506109208182858161091a5761091a610df6565b04610bb2565b9392505050565b6001600160a01b0384166109505760405163e602df0560e01b81525f60048201526024016106c8565b6001600160a01b03831661097957604051634a1406b160e11b81525f60048201526024016106c8565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156106df57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109eb91815260200190565b60405180910390a350505050565b6001600160a01b038316610a23578060025f828254610a189190610e44565b90915550610a939050565b6001600160a01b0383165f9081526020819052604090205481811015610a755760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106c8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610aaf57600280548290039055610acd565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b1291815260200190565b60405180910390a3505050565b5f80608083901c15610b3357608092831c92015b604083901c15610b4557604092831c92015b602083901c15610b5757602092831c92015b601083901c15610b6957601092831c92015b600883901c15610b7b57600892831c92015b600483901c15610b8d57600492831c92015b600283901c15610b9f57600292831c92015b600183901c1561036c5760010192915050565b5f818310610bc05781610920565b5090919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103b5575f80fd5b5f8060408385031215610c21575f80fd5b8235610c2c81610bfc565b946020939093013593505050565b5f805f60608486031215610c4c575f80fd5b8335610c5781610bfc565b92506020840135610c6781610bfc565b929592945050506040919091013590565b5f60208284031215610c88575f80fd5b5035919050565b5f60208284031215610c9f575f80fd5b813561092081610bfc565b5f8060408385031215610cbb575f80fd5b8235610cc681610bfc565b91506020830135610cd681610bfc565b809150509250929050565b600181811c90821680610cf557607f821691505b602082108103610d1357634e487b7160e01b5f52602260045260245ffd5b50919050565b805161ffff81168114610d2a575f80fd5b919050565b5f805f805f805f60e0888a031215610d45575f80fd5b8751610d5081610bfc565b8097505060208801518060020b8114610d67575f80fd5b9550610d7560408901610d19565b9450610d8360608901610d19565b9350610d9160808901610d19565b925060a088015160ff81168114610da6575f80fd5b60c08901519092508015158114610dbb575f80fd5b8091505092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761036c5761036c610dcb565b634e487b7160e01b5f52601260045260245ffd5b5f82610e2457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610e39575f80fd5b815161092081610bfc565b8082018082111561036c5761036c610dcb56fea2646970667358221220fd4b45fd8beb215f1da8991db0f25c9bb1f1b99e93b175f02960addb062b082164736f6c634300081a00336101206040819052600a805461ffff1916615a5a1790556064600b5561359f3881900390819083398101604081905261003791610129565b60015f55806001600160a01b03811661006957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610072816100a1565b505063ffffffff909316610100526001600160a01b0390811660c0523360e05291821660a05216608052610194565b600280546001600160a01b03191690556100ba816100bd565b50565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610124575f80fd5b919050565b5f805f805f60a0868803121561013d575f80fd5b855163ffffffff81168114610150575f80fd5b945061015e6020870161010e565b935061016c6040870161010e565b925061017a6060870161010e565b91506101886080870161010e565b90509295509295909350565b60805160a05160c05160e051610100516132ff6102a05f395f818161046c01528181610ee101528181611950015281816119d10152611a3501525f81816102fe0152818161057a015281816106a00152818161071501528181610cee01528181610d8801528181610e30015281816112d9015281816113c2015281816117aa0152611c5d01525f81816104e80152818161099501528181610b6a01528181610bbb01528181610f3f01528181610f7b0152818161144f015281816115c6015261163c01525f818161094801528181610b2b01528181611133015281816113a101528181611470015281816116600152818161178901528181611bc30152611c3901525f50506132ff5ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c8063775f9b6f11610109578063c2dd37e21161009e578063e30c39781161006e578063e30c397814610443578063f2fde38b14610454578063f38d00f014610467578063f82d8f561461048e575f80fd5b8063c2dd37e214610401578063d88287151461040a578063d944392314610413578063df49d31514610430575f80fd5b8063aba05870116100d9578063aba0587014610380578063ad1b63f414610393578063b7827ec3146103e6578063c1b309ec146103ee575f80fd5b8063775f9b6f14610344578063782ee1701461035757806379ba5097146103675780638da5cb5b1461036f575f80fd5b806327ab48eb1161017f57806348cd53151161014f57806348cd5315146102f95780635410021e146103205780635dee31a714610329578063715018a61461033c575f80fd5b806327ab48eb146102ae5780632ec9c3b4146102b657806330dc71ac146102c957806340f6ac31146102dc575f80fd5b8063158a3b12116101ba578063158a3b121461023757806315e941fa1461024a5780631bea83fe14610261578063225a469914610294575f80fd5b806304bb7100146101e057806308fcb6e1146101f5578063090f8ad414610208575b5f80fd5b6101f36101ee366004612936565b6104a1565b005b6101f3610203366004612936565b610a0e565b60045461021d90610100900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b61021d610245366004612936565b610c7a565b61025360065481565b60405190815260200161022e565b61027c73c36442b4a4522e871399cd717abdd847ab11fe8881565b6040516001600160a01b03909116815260200161022e565b61029c610cc8565b60405160ff909116815260200161022e565b6101f3610cd7565b61021d6102c4366004612936565b610dea565b6101f36102d7366004612951565b610e0e565b6102e4610ff2565b6040805192835260208301919091520161022e565b61027c7f000000000000000000000000000000000000000000000000000000000000000081565b61025360095481565b6101f3610337366004612976565b6111b5565b6101f3611206565b6101f3610352366004612951565b611219565b60085461021d9063ffffffff1681565b6101f3611294565b6001546001600160a01b031661027c565b61025361038e366004612951565b6112d5565b6103c66103a1366004612936565b60076020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161022e565b600b5461021d565b6102536103fc366004612951565b6113f1565b61025360055481565b610253600b5481565b6004546104209060ff1681565b604051901515815260200161022e565b61029c61043e366004612936565b611494565b6002546001600160a01b031661027c565b6101f36104623660046129a5565b6114cc565b61021d7f000000000000000000000000000000000000000000000000000000000000000081565b6101f361049c366004612976565b61153d565b60045460ff16156104c557604051630fd02b6d60e41b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526ba18f07d736b90be550000000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610535573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055991906129c0565b101561057857604051631bbc2d7d60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc2268c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f891906129d7565b6001600160a01b0316336001600160a01b0316146106295760405163c004a90b60e01b815260040160405180910390fd5b6004805460ff191660011790555f6106536ba18f07d736b90be55000000063ffffffff8416611594565b6040516335c7975760e11b81527396a5399d07896f757bd4c6ef56461f58db95186260048201527325215d9ba4403b3da77ce50606b54577a71b78956024820152604481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636b8f2eae906064016020604051808303815f875af11580156106ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071291906129d7565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639bed7b6c6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561076b575f80fd5b505af115801561077d573d5f803e3d5ffd5b505050505f805f805f8061079d876ba18f07d736b90be550000000611781565b9550955095509550955095506107c88273c36442b4a4522e871399cd717abdd847ab11fe8888611832565b6107e78173c36442b4a4522e871399cd717abdd847ab11fe8887611832565b5f604051806101600160405280846001600160a01b03168152602001836001600160a01b0316815260200161271062ffffff16815260200160c880620d89e7196108319190612a1a565b61083b9190612a52565b60020b815260200160c880610853620d89e719612a78565b61085d9190612a1a565b6108679190612a52565b60020b8152602001888152602001878152602001868152602001858152602001306001600160a01b031681526020018a63ffffffff1681525090505f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166388316456836040518263ffffffff1660e01b81526004016108e39190612a98565b6080604051808303815f875af11580156108ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109239190612b5c565b50506040805180820182526001600160f81b0384168082526001600160a01b038981167f00000000000000000000000000000000000000000000000000000000000000008216146020909301839052600160f81b9092021760035590516370a0823160e01b81523060048201529293507f000000000000000000000000000000000000000000000000000000000000000016916370a082319150602401602060405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ff91906129c0565b60095550505050505050505050565b610a16611926565b610a1e61194e565b60045460ff16610a4157604051631864d7ab60e21b815260040160405180910390fd5b60085463ffffffff165f9081526007602052604090208054600160801b90046001600160801b031615610a87576040516331bbcb2160e11b815260040160405180910390fd5b80546001600160801b03908116600160801b810280821784555f9261271092610ab4926096921617612ba3565b610abe9190612bba565b82549091505f90610ad99083906001600160801b0316612bcd565b90505f610aec828663ffffffff16611594565b90505f610b00826107d06127106001611b40565b90505f610b1c610b108385612bcd565b8863ffffffff16611b91565b9050610b26610cd7565b610b657f0000000000000000000000000000000000000000000000000000000000000000731d59429571d8fde785f45bf593e94f2da6072edb84611cc1565b610b907f00000000000000000000000000000000000000000000000000000000000000003387611cc1565b8160065f828254610ba19190612be0565b90915550506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c91906129c0565b6009556040518281523390829086907fec283c32bba1c9c4cc89935f07153bd56d321e23bfa00d19044574f426007e699060200160405180910390a4505050505050610c7760015f55565b50565b5f80610c8861c4e084612bf3565b90505f610c986201518083612c0f565b90505f610ca6826001612c36565b610cb39062015180612c52565b610cbf9061c4e0612c36565b95945050505050565b5f610cd242611494565b905090565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f91906129c0565b905080600554610d6f9190612be0565b600555604051630852cd8d60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015610dd1575f80fd5b505af1158015610de3573d5f803e3d5ffd5b5050505050565b5f80610df861c4e084612bf3565b9050610e076201518082612c0f565b9392505050565b805f03610e2e5760405163b4fa3fb360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637dc2268c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eae91906129d7565b6001600160a01b0316336001600160a01b031614610edf5760405163c004a90b60e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642118015610f2d575060045461070890610f2b90610100900463ffffffff1642612bcd565b115b15610f3a57610f3a61194e565b610f667f0000000000000000000000000000000000000000000000000000000000000000333084611db5565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610fc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec91906129c0565b60095550565b6040805180820182526003546001600160f81b038082168352600160f81b90910460ff161515602080840191909152835160808101855283519092168252309082019081526001600160801b0382850181815260608401828152955163fc6f786560e01b81528451600482015292516001600160a01b031660248401525181166044830152935190931660648401525f928392919073c36442b4a4522e871399cd717abdd847ab11fe889063fc6f78659060840160408051808303815f875af11580156110c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e59190612c71565b602084015191955093505f906110fc5783856110ff565b84845b5060405163a9059cbb60e01b815273ee30c3d642ea92aab46c81ab5367e3ef048b6e5e6004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a59190612ca2565b506111ae610cd7565b5050509091565b6111bd611eb2565b60648160ff1611806111d2575060028160ff16105b156111f05760405163b4fa3fb360e01b815260040160405180910390fd5b600a805460ff191660ff92909216919091179055565b61120e611eb2565b6112175f611edf565b565b611221611eb2565b600b8190556064811080159061123b57506103e8600b5411155b61128c5760405162461bcd60e51b815260206004820152601e60248201527f4d696e20312070657263656e742c206d61782031302070657263656e742e000060448201526064015b60405180910390fd5b610c7761194e565b60025433906001600160a01b031681146112cc5760405163118cdaa760e01b81526001600160a01b0382166004820152602401611283565b610c7781611edf565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e80c20e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611333573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135791906129d7565b90506103845f61136683611ef8565b90508163ffffffff168163ffffffff161015611380578091505b5f61138b84846120b0565b5090505f611398826122e5565b90506113e681887f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612600565b979650505050505050565b5f7325215d9ba4403b3da77ce50606b54577a71b78956103848261141483611ef8565b90508163ffffffff168163ffffffff16101561142e578091505b5f61143984846120b0565b5090505f611446826122e5565b90506113e681887f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612600565b5f6007620151806114a761c4e085612bf3565b6114b19190612c0f565b6114bc906004612c36565b6114c69190612cbb565b92915050565b6114d4611eb2565b600280546001600160a01b0383166001600160a01b031990911681179091556115056001546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611545611eb2565b60648160ff16118061155a575060028160ff16105b156115785760405163b4fa3fb360e01b815260040160405180910390fd5b600a805460ff9092166101000261ff0019909216919091179055565b60405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c058615646004820152602481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063095ea7b3906044016020604051808303815f875af1158015611614573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116389190612ca2565b505f7f00000000000000000000000000000000000000000000000000000000000000006127107f000000000000000000000000000000000000000000000000000000000000000060405160200161169193929190612ce2565b60405160208183030381529060405290505f6116ac856113f1565b600a549091505f906064906116c990610100900460ff1682612d1d565b6116d69060ff1684612ba3565b6116e09190612bba565b6040805160a0810182528581523060208201528082018890526060810189905260808101839052905163c04b8d5960e01b81529192509073e592427a0aece92de3edee1f18e0157c058615649063c04b8d5990611741908490600401612d36565b6020604051808303815f875af115801561175d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e691906129c0565b5f80808080807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03808216908316106117e35780826117e6565b81815b90945092506001600160a01b038085169083161461180557888a611808565b89895b9098509650611816886126ce565b61181f886126ce565b989b979a50985092959194509092505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f9283929087169161188d9190612da5565b5f604051808303815f865af19150503d805f81146118c6576040519150601f19603f3d011682016040523d82523d5f602084013e6118cb565b606091505b50915091508180156118f55750805115806118f55750808060200190518101906118f59190612ca2565b610de35760405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606401611283565b60025f540361194857604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642101561199557604051631864d7ab60e21b815260040160405180910390fd5b6004545f90610100900463ffffffff16156119c7576004546119c290610100900463ffffffff1642612bcd565b6119f7565b6119f763ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642612bcd565b90505f805f805f600460019054906101000a900463ffffffff1663ffffffff165f03611a5f57611a2c8663ffffffff166126e8565b919650945092507f0000000000000000000000000000000000000000000000000000000000000000915060019050611aa8565b61070863ffffffff87161115611aa857611a7e8663ffffffff166126e8565b6004549297509095509350610100900463ffffffff1691506001905082611aa481612dbb565b9350505b8015611b3857611abe61070861ffff8516612c52565b611ac89083612c36565b6004805463ffffffff9283166101000264ffffffff00199091161790556040805180820182526001600160801b0380881682525f6020808401828152958b168083526007909152939020915193518116600160801b029316929092179091556008805463ffffffff191690911790555b505050505050565b5f80611b4d86868661278a565b9050611b5883612849565b8015611b7357505f8480611b6e57611b6e6129f2565b868809115b15611b8657611b83600182612be0565b90505b90505b949350505050565b60405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c058615646004820152602481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063095ea7b3906044016020604051808303815f875af1158015611c11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c359190612ca2565b505f7f00000000000000000000000000000000000000000000000000000000000000006127107f0000000000000000000000000000000000000000000000000000000000000000604051602001611c8e93929190612ce2565b60405160208183030381529060405290505f611ca9856112d5565b600a549091505f906064906116c99060ff1682612d1d565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611d1c9190612da5565b5f604051808303815f865af19150503d805f8114611d55576040519150601f19603f3d011682016040523d82523d5f602084013e611d5a565b606091505b5091509150818015611d84575080511580611d84575080806020019051810190611d849190612ca2565b610de35760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401611283565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f92839290881691611e189190612da5565b5f604051808303815f865af19150503d805f8114611e51576040519150601f19603f3d011682016040523d82523d5f602084013e611e56565b606091505b5091509150818015611e80575080511580611e80575080806020019051810190611e809190612ca2565b611b385760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401611283565b6001546001600160a01b031633146112175760405163118cdaa760e01b8152336004820152602401611283565b600280546001600160a01b0319169055610c7781612875565b5f805f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611f37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5b9190612dec565b5050509350935050505f8161ffff1611611f9c5760405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606401611283565b5f806001600160a01b03861663252c09d784611fb9876001612e7a565b611fc39190612e94565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401608060405180830381865afa158015612000573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120249190612ec8565b9350505091508061209c5760405163252c09d760e01b81525f60048201526001600160a01b0387169063252c09d790602401608060405180830381865afa158015612071573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120959190612ec8565b5091935050505b6120a68242612bf3565b9695505050505050565b5f808263ffffffff165f036120ec5760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401611283565b6040805160028082526060820183525f9260208301908036833701905050905083815f8151811061211f5761211f612f31565b602002602001019063ffffffff16908163ffffffff16815250505f8160018151811061214d5761214d612f31565b602002602001019063ffffffff16908163ffffffff16815250505f80866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016121959190612f45565b5f60405180830381865afa1580156121af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d69190810190613054565b915091505f825f815181106121ed576121ed612f31565b60200260200101518360018151811061220857612208612f31565b602002602001015161221a9190613119565b90505f825f8151811061222f5761222f612f31565b60200260200101518360018151811061224a5761224a612f31565b602002602001015161225c9190613146565b905063ffffffff881661226f8184613165565b97505f8360060b12801561228e57506122888184613198565b60060b15155b156122a1578761229d816131b9565b9850505b63ffffffff8916640100000000600160c01b03602084901b166122cb6001600160a01b03836131da565b6122d5919061320b565b9750505050505050509250929050565b5f805f8360020b126122fa578260020b612301565b8260020b5f035b9050620d89e8811115612327576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f0361233c57600160801b61234e565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612382576ffff97272373d413259a46990580e213a0260801c5b60048216156123a1576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156123c0576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156123df576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156123fe576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561241d576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561243c576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561245c576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561247c576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561249c576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156124bc576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156124dc576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156124fc576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561251c576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561253c576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561255d576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561257d576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561259c576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156125b9576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156125d857805f19816125d4576125d46129f2565b0490505b6401000000008106156125ec5760016125ee565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b03861611612672575f61262c6001600160a01b03871680612ba3565b9050826001600160a01b0316846001600160a01b03161061265b57612656600160c01b868361278a565b61266a565b61266a8186600160c01b61278a565b915050611b89565b5f6126906001600160a01b038716806801000000000000000061278a565b9050826001600160a01b0316846001600160a01b0316106126bf576126ba600160801b868361278a565b6120a6565b6120a68186600160801b61278a565b5f6127106126de83612328612ba3565b6114c69190612bba565b5f805f6126f4846128c6565b60085490915061270f9061ffff83169063ffffffff16612c36565b61271a906001612c36565b92505f612710600b546009546127309190612ba3565b61273a9190612bba565b90505f612748603083612bba565b90505f61275961ffff851683613239565b9050612765818361325b565b9450600954856001600160801b031611156127805760095494505b5050509193909250565b5f838302815f1985870982811083820303915050805f036127be578382816127b4576127b46129f2565b0492505050610e07565b8084116127de5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f600282600381111561285e5761285e61327a565b612868919061328e565b60ff166001149050919050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6004545f90610100900463ffffffff1681036128fe576107088211156128f7576128f261070883612bba565b6114c6565b5f92915050565b6107088211156128f757600161291661070884612bba565b6128f291906132af565b919050565b63ffffffff81168114610c77575f80fd5b5f60208284031215612946575f80fd5b8135610e0781612925565b5f60208284031215612961575f80fd5b5035919050565b60ff81168114610c77575f80fd5b5f60208284031215612986575f80fd5b8135610e0781612968565b6001600160a01b0381168114610c77575f80fd5b5f602082840312156129b5575f80fd5b8135610e0781612991565b5f602082840312156129d0575f80fd5b5051919050565b5f602082840312156129e7575f80fd5b8151610e0781612991565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8160020b8360020b80612a3057612a306129f2565b627fffff1982145f1982141615612a4957612a49612a06565b90059392505050565b5f8260020b8260020b028060020b9150808214612a7157612a71612a06565b5092915050565b5f8160020b627fffff198103612a9057612a90612a06565b5f0392915050565b81516001600160a01b0316815261016081016020830151612ac460208401826001600160a01b03169052565b506040830151612adb604084018262ffffff169052565b506060830151612af0606084018260020b9052565b506080830151612b05608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100830151610100830152610120830151612b4c6101208401826001600160a01b03169052565b5061014092830151919092015290565b5f805f8060808587031215612b6f575f80fd5b845160208601519094506001600160801b0381168114612b8d575f80fd5b6040860151606090960151949790965092505050565b80820281158282048414176114c6576114c6612a06565b5f82612bc857612bc86129f2565b500490565b818103818111156114c6576114c6612a06565b808201808211156114c6576114c6612a06565b63ffffffff82811682821603908111156114c6576114c6612a06565b5f63ffffffff831680612c2457612c246129f2565b8063ffffffff84160491505092915050565b63ffffffff81811683821601908111156114c6576114c6612a06565b63ffffffff8181168382160290811690818114612a7157612a71612a06565b5f8060408385031215612c82575f80fd5b505080516020909101519092909150565b80518015158114612920575f80fd5b5f60208284031215612cb2575f80fd5b610e0782612c93565b5f63ffffffff831680612cd057612cd06129f2565b8063ffffffff84160691505092915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b60ff82811682821603908111156114c6576114c6612a06565b602081525f825160a0602084015280518060c0850152806020830160e086015e5f60e0828601015260018060a01b0360208601511660408501526040850151606085015260608501516080850152608085015160a085015260e0601f19601f8301168501019250505092915050565b5f82518060208501845e5f920191825250919050565b5f61ffff821661ffff8103612dd257612dd2612a06565b60010192915050565b805161ffff81168114612920575f80fd5b5f805f805f805f60e0888a031215612e02575f80fd5b8751612e0d81612991565b8097505060208801518060020b8114612e24575f80fd5b9550612e3260408901612ddb565b9450612e4060608901612ddb565b9350612e4e60808901612ddb565b925060a0880151612e5e81612968565b9150612e6c60c08901612c93565b905092959891949750929550565b61ffff81811683821601908111156114c6576114c6612a06565b5f61ffff831680612ea757612ea76129f2565b8061ffff84160691505092915050565b8051600681900b8114612920575f80fd5b5f805f8060808587031215612edb575f80fd5b8451612ee681612925565b9350612ef460208601612eb7565b92506040850151612f0481612991565b9150612f1260608601612c93565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b81811015612f8257835163ffffffff16835260209384019390920191600101612f5e565b509095945050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fb657612fb6612f1d565b604052919050565b5f67ffffffffffffffff821115612fd757612fd7612f1d565b5060051b60200190565b5f82601f830112612ff0575f80fd5b8151613003612ffe82612fbe565b612f8d565b8082825260208201915060208360051b860101925085831115613024575f80fd5b602085015b8381101561304a57805161303c81612991565b835260209283019201613029565b5095945050505050565b5f8060408385031215613065575f80fd5b825167ffffffffffffffff81111561307b575f80fd5b8301601f8101851361308b575f80fd5b8051613099612ffe82612fbe565b8082825260208201915060208360051b8501019250878311156130ba575f80fd5b6020840193505b828410156130e3576130d284612eb7565b8252602093840193909101906130c1565b80955050505050602083015167ffffffffffffffff811115613103575f80fd5b61310f85828601612fe1565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156114c6576114c6612a06565b6001600160a01b0382811682821603908111156114c6576114c6612a06565b5f8160060b8360060b8061317b5761317b6129f2565b667fffffffffffff1982145f1982141615612a4957612a49612a06565b5f8260060b806131aa576131aa6129f2565b808360060b0791505092915050565b5f8160020b627fffff1981036131d1576131d1612a06565b5f190192915050565b6001600160c01b0381811683821681810290921691818304811482151761320357613203612a06565b505092915050565b5f6001600160c01b03831680613223576132236129f2565b6001600160c01b03929092169190910492915050565b6001600160801b038181168382160290811690818114612a7157612a71612a06565b6001600160801b0381811683821601908111156114c6576114c6612a06565b634e487b7160e01b5f52602160045260245ffd5b5f60ff8316806132a0576132a06129f2565b8060ff84160691505092915050565b61ffff82811682821603908111156114c6576114c6612a0656fea264697066735822122092d63e90c6ee3e373b5ec127e62b0d9644177780152c2e0888a4c90cd85a24e164736f6c634300081a003360e060405260405161124138038061124183398101604081905261002291610096565b6001600160a01b0383166100495760405163b4fa3fb360e01b815260040160405180910390fd5b63ffffffff1660c052600380546001600160a01b031916331790556001600160a01b039081166080521660a0526100e2565b80516001600160a01b0381168114610091575f80fd5b919050565b5f805f606084860312156100a8575f80fd5b6100b18461007b565b92506100bf6020850161007b565b9150604084015163ffffffff811681146100d7575f80fd5b809150509250925092565b60805160a05160c0516110cc6101755f395f8181610232015281816102d70152818161034901528181610510015261096701525f81816101af0152818161066b0152818161071b0152818161077c0152818161081901526108dc01525f8181610259015281816104e60152818161069a0152818161084f01528181610a6301528181610aab0152610af301526110cc5ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806395d4063f11610093578063d09d197711610063578063d09d197714610203578063e6fd48bc1461022d578063f9119bbd14610254578063ff4773081461027b575f80fd5b806395d4063f14610182578063a0712d6814610197578063aa6df299146101aa578063c8581e2a146101e9575f80fd5b806377c18c73116100ce57806377c18c731461012c5780638041950b146101345780638d50a3d9146101345780638d9f981014610153575f80fd5b8063182b74e6146100f45780632551d91714610110578063488fc77514610119575b5f80fd5b6100fd60025481565b6040519081526020015b60405180910390f35b6100fd60015481565b6100fd610127366004610e58565b61028e565b6100fd5f5481565b61013e6201518081565b60405163ffffffff9091168152602001610107565b61015b6102c9565b6040805163ffffffff94851681529284166020840152921691810191909152606001610107565b610195610190366004610e71565b610384565b005b6101956101a5366004610e91565b6104b9565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610107565b6101f1600e81565b60405160ff9091168152602001610107565b6100fd610211366004610ea8565b600460209081525f928352604080842090915290825290205481565b61013e7f000000000000000000000000000000000000000000000000000000000000000081565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6003546101d1906001600160a01b031681565b5f808263ffffffff166001146102b6576001830363ffffffff16668e1bc9bf040000026102b8565b5f5b670de0b6b3a7640000039392505050565b5f8080806102fd63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642610efa565b905061030c6201518082610f21565b610317906001610f48565b60ff169350600e84111561032a57600e93505b62015180610339600186610f61565b6103439190610f7d565b61036d907f0000000000000000000000000000000000000000000000000000000000000000610fa3565b925061037c6201518084610fa3565b915050909192565b4261038e82610943565b63ffffffff1611156103b357604051632db8551b60e11b815260040160405180910390fd5b335f90815260046020908152604080832060ff85168452909152812054908190036103f157604051634cfe5d0f60e11b815260040160405180910390fd5b335f81815260046020908152604080832060ff871680855290835281842093909355518481529192917fb3df9980c12f4f6cbd2921f5dbaa79e0cbd522a59e93a57baab92fd3a4ecc33f910160405180910390a3806001546104539190610fbf565b6001556003546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f19906044015f604051808303815f87803b15801561049f575f80fd5b505af11580156104b1573d5f803e3d5ffd5b505050505050565b805f036104d95760405163b4fa3fb360e01b815260040160405180910390fd5b61050e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846109a1565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642101561055557604051631864d7ab60e21b815260040160405180910390fd5b5f8061055f6102c9565b92505091508063ffffffff1642111561058b576040516354913e1960e01b815260040160405180910390fd5b5f61059584610a0e565b90505f670de0b6b3a76400006105aa8561028e565b6105b49087610fd2565b6105be9190610fe9565b335f90815260046020908152604080832063ffffffff891684529091528120805492935083929091906105f2908490610fbf565b909155505060405181815263ffffffff85169033907f35e338cd1c45f4d09abab571f5559403d556df8920b83a5e2710f6f6657d44019060200160405180910390a3806002546106429190610fbf565b6002555f54610652908690610fbf565b5f5560405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156106e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107049190610ffc565b50604051630c371c6b60e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906330dc71ac906024015f604051808303815f87803b158015610764575f80fd5b505af1158015610776573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d94439236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fa9190610ffc565b1580156108bd57506040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526ba18f07d736b90be550000000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610896573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ba919061101b565b10155b1561093c576040516204bb7160e81b815263ffffffff421660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906304bb7100906024015f604051808303815f87803b158015610925575f80fd5b505af1158015610937573d5f803e3d5ffd5b505050505b5050505050565b5f8062015180610954600185611032565b60ff166109619190610f7d565b61098b907f0000000000000000000000000000000000000000000000000000000000000000610fa3565b905061099a6201518082610fa3565b9392505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610a089186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610b36565b50505050565b5f80610a21836103e86127106001610ba1565b90505f610a35846103206127106001610ba1565b90505f610a49856103e86127106001610ba1565b82860381900384900394509050610a9e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016738d81a541ceb500a25ad15de5b692b5d0201dfaa085610bf0565b610ae66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167396a5399d07896f757bd4c6ef56461f58db95186283610bf0565b610b2e6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673ee30c3d642ea92aab46c81ab5367e3ef048b6e5e84610bf0565b505050919050565b5f610b4a6001600160a01b03841683610c21565b905080515f14158015610b6e575080806020019051810190610b6c9190610ffc565b155b15610b9c57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b5f80610bae868686610c37565b9050610bb983610cf6565b8015610bd457505f8480610bcf57610bcf610f0d565b868809115b15610be757610be4600182610fbf565b90505b95945050505050565b6040516001600160a01b03838116602483015260448201839052610b9c91859182169063a9059cbb906064016109d6565b6060610c2e83835f610d22565b90505b92915050565b5f838302815f1985870982811083820303915050805f03610c6b57838281610c6157610c61610f0d565b049250505061099a565b808411610c8b5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6002826003811115610d0b57610d0b61104b565b610d15919061105f565b60ff166001149050919050565b606081471015610d475760405163cd78605960e01b8152306004820152602401610b93565b5f80856001600160a01b03168486604051610d629190611080565b5f6040518083038185875af1925050503d805f8114610d9c576040519150601f19603f3d011682016040523d82523d5f602084013e610da1565b606091505b5091509150610db1868383610dbb565b9695505050505050565b606082610dd057610dcb82610e17565b61099a565b8151158015610de757506001600160a01b0384163b155b15610e1057604051639996b31560e01b81526001600160a01b0385166004820152602401610b93565b508061099a565b805115610e275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b803563ffffffff81168114610e53575f80fd5b919050565b5f60208284031215610e68575f80fd5b610c2e82610e40565b5f60208284031215610e81575f80fd5b813560ff8116811461099a575f80fd5b5f60208284031215610ea1575f80fd5b5035919050565b5f8060408385031215610eb9575f80fd5b82356001600160a01b0381168114610ecf575f80fd5b9150610edd60208401610e40565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c3157610c31610ee6565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680610f3657610f36610f0d565b8063ffffffff84160491505092915050565b60ff8181168382160190811115610c3157610c31610ee6565b63ffffffff8281168282160390811115610c3157610c31610ee6565b63ffffffff8181168382160290811690818114610f9c57610f9c610ee6565b5092915050565b63ffffffff8181168382160190811115610c3157610c31610ee6565b80820180821115610c3157610c31610ee6565b8082028115828204841417610c3157610c31610ee6565b5f82610ff757610ff7610f0d565b500490565b5f6020828403121561100c575f80fd5b8151801515811461099a575f80fd5b5f6020828403121561102b575f80fd5b5051919050565b60ff8281168282160390811115610c3157610c31610ee6565b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061107157611071610f0d565b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205681b21cf9a1e3f4bf05e49364d7fd6ad061ee58b70e8ef308ef2dcb2b04450a64736f6c634300081a003300000000000000000000000000000000000000000000000000000000671fcd9c00000000000000000000000000000000000000000000000000000000671fcd9c00000000000000000000000025215d9ba4403b3da77ce50606b54577a71b7895000000000000000000000000f19308f923582a6f7c465e5ce7a9dc1bec6665b100000000000000000000000096a5399d07896f757bd4c6ef56461f58db951862000000000000000000000000ee30c3d642ea92aab46c81ab5367e3ef048b6e5e