0 txs
7 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
owner
viewfunction owner() view returns (address)
version
viewfunction version() view returns (string)
renounceOwnership
nonpayablefunction renounceOwnership()
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithPermit
nonpayablefunction uniswapV3SwapToWithPermit(uint256 receiver, address srcToken, uint256 amount, uint256 minReturn, uint256[] pools, bytes permit) returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
events
AdminChanged
event AdminChanged(address newAdmin)
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
Initialized
event Initialized(uint8 version)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614c6c806100206000396000f3fe6080604052600436106101185760003560e01c80638da5cb5b116100a0578063e0af361611610064578063e0af36161461031a578063e99bfa951461033c578063f2fde38b1461034f578063f3e144b61461036f578063fa461e331461038f57600080fd5b80638da5cb5b146102a6578063918f8674146102c45780639871efa4146102dc578063b80c2f09146102ef578063ca68d8f61461030257600080fd5b806354fd4d50116100e757806354fd4d50146101ce578063591b3d08146102165780636aa4764514610229578063715018a61461026957806373679b6b1461027e57600080fd5b806301617fab1461016f57806303b87e5f1461018257806308298b5a146101a85780630d5f0e3b146101bb57600080fd5b3661016a573233036101685760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61016861017d366004613cf3565b6103af565b610195610190366004613d9d565b6107fd565b6040519081526020015b60405180910390f35b6101956101b6366004613e69565b6108ae565b6101956101c9366004613edb565b6108f0565b3480156101da57600080fd5b506102096040518060400160405280600f81526020016e76312e302e332d646563696d616c3960881b81525081565b60405161019f9190613f8b565b610195610224366004614580565b610930565b34801561023557600080fd5b50610251731d948e5d85b7987ae664b2dc0f34dcf1adc576fc81565b6040516001600160a01b03909116815260200161019f565b34801561027557600080fd5b50610168610b96565b34801561028a57600080fd5b5061025173bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9981565b3480156102b257600080fd5b506033546001600160a01b0316610251565b3480156102d057600080fd5b50610195633b9aca0081565b6101956102ea366004613edb565b610baa565b6101956102fd366004614642565b610be1565b34801561030e57600080fd5b506101956301c9c38081565b34801561032657600080fd5b50610251600080516020614bb783398151915281565b61019561034a3660046146f8565b610c3e565b34801561035b57600080fd5b5061016861036a3660046147a8565b610c4e565b34801561037b57600080fd5b5061019561038a366004614806565b610cc7565b34801561039b57600080fd5b506101686103aa366004614890565b610d17565b600160ff1b81166001600160801b038216806104025760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b604482015260640161015f565b600061040c610f66565b905060008361042957600080516020614bd7833981519152610439565b600080516020614bb78339815191525b905060008061045484843333896001600160801b03166110c0565b9150915085156106265760405163052f523360e11b8152600080516020614bb7833981519152600482015233602482015273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9960448201526001600160801b0386166064820152731d948e5d85b7987ae664b2dc0f34dcf1adc576fc90630a5ea46690608401600060405180830381600087803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b038816600482015273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a999250632e1a7d4d9150602401600060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b505050506001600160a01b0382163014610621576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146105c9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ce565b606091505b505090508061061f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c656400000000604482015260640161015f565b505b61071b565b835161067d57846001600160801b0316341461067d5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b604482015260640161015f565b600080516020614bb78339815191526001600160a01b031663d0e30db0866001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506001600160a01b0383163014905061071b5761071b600080516020614bb783398151915283876001600160801b0316611613565b6000610728853384611643565b9050600080516020614c178339815191528960405161074991815260200190565b60405180910390a1600080516020614bf78339815191528761077957600080516020614bd7833981519152610789565b600080516020614bb78339815191525b886107a257600080516020614bb78339815191526107b2565b600080516020614bd78339815191525b604080516001600160a01b03938416815292909116602083015232908201526001600160801b03881660608201819052608082015260a00160405180910390a1505050505050505050565b60008760800135428110156108245760405162461bcd60e51b815260040161015f906148e2565b6040518b8152600080516020614c178339815191529060200160405180910390a161089f33808c61085a368e90038e018e61490a565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061089a92508d91508e9050614926565b6119e1565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614c178339815191529060200160405180910390a16108e587878733888888611a9c565b979650505050505050565b60405160a086901c8152600090600080516020614c178339815191529060200160405180910390a1610926338787878787611b34565b9695505050505050565b60008660800151428110156109575760405162461bcd60e51b815260040161015f906148e2565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016109bd5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b604482015260640161015f565b6001600160a01b038416610a0c5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b604482015260640161015f565b6001600160a01b038516610a555760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b604482015260640161015f565b6000896040015111610aa05760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b604482015260640161015f565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190614933565b905060005b8951811015610b72578a60400151828b8381518110610b3157610b3161494c565b6020026020010151610b439190614978565b610b4d919061498f565b8a8281518110610b5f57610b5f61494c565b6020908102919091010152600101610b10565b5060408a01819052610b888a8a8a30898b611cb6565b9a9950505050505050505050565b610b9e611fed565b610ba86000612047565b565b60405160a086901c8152600090600080516020614c178339815191529060200160405180910390a161092686868633338888611a9c565b6000876080013542811015610c085760405162461bcd60e51b815260040161015f906148e2565b6040518a8152600080516020614c178339815191529060200160405180910390a1610b8833808061085a368e90038e018e61490a565b6000610926868686868687610930565b610c56611fed565b6001600160a01b038116610cbb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015f565b610cc481612047565b50565b60405160a089901c8152600090600080516020614c178339815191529060200160405180910390a1610cfa888484612099565b610d08338a89898989611b34565b90505b98975050505050505050565b610db8565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d5357610d53610d1c565b6000518015610d7e5760a435600483015260248201819052610d7e6020600060448582885af1610d83565b505050565b80610d9057610d90610d1c565b600160005114601f3d11163d151780610db457633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610def57610def610d1c565b6020806004808501335afa610e0657610e06610d1c565b60206040600460088501335afa610e1f57610e1f610d1c565b6000806000881360018114610e3b576020519250879150610e44565b60005192508891505b507fffdb1d10011ad0ff90774d0c6bb92e5c5c8b4461f700000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610ebc57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610f2e57826014860152836034860152336054860152816074860152610f29602060006084601089016000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af1610d83565b610f5b565b336010860152816030860152610f51602060006044600c89016000885af1610d83565b610f5b8386610d26565b505050505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915260405161010081016040525060203603356001600160d01b031981166522220afc2bbb60d01b8114651111057e155560d11b821417651111057e155560d11b8214651e51057e155560d11b83141784526522220afc2bbb60d01b8214653ca20afc2bbb60d01b831417846020015265ffffffffffff60a01b831660a01c84604001526001600160a01b0383168460600152604036033592506000600160ff1b8416118460e001526001600160a01b038316846080015260018114846101000152600181146001811461108e5760008560a0015260008560c001526110b9565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b6000808660200151156110e557306110dc8860800151306121f8565b91509150611609565b86516110f657508290506000611609565b61139b565b8082028115828204841417840261111a5763ad251c276000526004601cfd5b9290920492915050565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d7e57610d7e60607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72611124565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af19050806111f1576111f160577c13636c61696d20746f6b656e73206661696c6564000000000000000000611124565b5050505050565b600080604051604c81016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80611252576112526058740519d95d0818985b185b98d953d98819985a5b195960421b611124565b60005189880161127d670de0b6b3a76400008361127884670de0b6b3a76400008e6110fb565b6110fb565b955050808511156112b0576112b060597c15696e76616c696420616d6f756e74315363616c656400000000000000611124565b86600884015284602884015260008060446004860160008a5af19150816112f9576112f9605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611124565b881561134a57848103935088600484015283602484015260008060448560008a5af191508161134a5761134a605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611124565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608087015160e088015161010089015160009190898414600080516020614bd783398151915285148b1516176113f3576113f3605b7c17746f6b656e20616e6420737263206e6f74206d617463680000000000611124565b610100600080516020614bd7833981519152851402601083028201019250505060008060008060408d015160a08e01516301c9c380818301111561145957611459605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611124565b60608f01519550808201633b9aca0003828c0204935060c08f01519450808201633b9aca0003818c0204925050508461010081146114ec57610101811461150f5761011081146114ec57610111811461150f578015611555576001811461156c576010811461159a57601181146115c6576114e760516e0e696e76616c69642073746174757360781b611124565b6115fa565b6114f68386611140565b6114e78584600080516020614bd7833981519152611357565b6115198386611140565b6115328584600080516020614bd7833981519152611357565b61153c8285611140565b6114e78483600080516020614bd7833981519152611357565b61156183868e8a611177565b6114e7858489611357565b61157883868e8a611177565b611583858489611357565b61158f82858e8a611177565b6114e7848389611357565b6115a683308e8a611177565b6115b460008085888b6111f8565b506115c086828a611357565b506115fa565b6115d4828401308e8a611177565b6115e1828585888b6111f8565b6115ec87838b611357565b6115f786828b611357565b50505b50505050505050836000915091505b9550959350505050565b6116268363a9059cbb60e01b8484612278565b610d7e5760405163fb7f507960e01b815260040160405180910390fd5b60008360200151611656575060006119da565b604084015160a08501516301c9c380818301111561169657611696605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611124565b6080860151606087015160405160608101604052600080516020614bd783398151915283146001811461189757604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061171e5761171e6058740519d95d0818985b185b98d953d98819985a5b195960421b611124565b6000518a81101561174257611742604d6a029cdd588819985a5b195960921b611124565b8a81039050633b9aca0089820204995085600c84015289602c84015260008060446008860160008b5af191508161179b5761179b605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611124565b868552896020860152856040860152600080516020614b97833981519152606086a187156118405760c08d0151633b9aca0089830204808c019b5081600886015280602886015260008060446004880160008d5af193508361181f5761181f605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611124565b88875260208701526040860152600080516020614b97833981519152606086a15b6001600160a01b038c1660048401528990036024830152600080604484828a5af19050806118905761189060607c1c7472616e7366657220746f6b656e207265636569766572206661696c611124565b50506119d3565b874710156118b8576118b8604d6a029cdd588819985a5b195960921b611124565b874703633b9aca008782020497506000806000808b885af1806118fd576118fd605d7c197472616e73666572206574682072656665726572206661696c000000611124565b858452886020850152846040850152600080516020614b97833981519152606085a1861561198f5760c08c0151633b9aca0083890204998a0199600080808084865af18061196d5761196d605d7c197472616e73666572206574682072656665726572206661696c000000611124565b5087865260208601526040850152600080516020614b97833981519152606085a15b6000806000808c86038f60601b60601c5af19050806119d0576119d0605e7c1a7472616e7366657220657468207265636569766572206661696c0000611124565b50505b5050505050505b9392505050565b60006001600160a01b038516611a275760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b604482015260640161015f565b6000611a31610f66565b9050600080611a5a83611a4e89600001516001600160a01b031690565b8c8b8b604001516110c0565b9092509050896000611a70898989858f89611cb6565b90506000611a7f868c86611643565b9050611a8b81836149b1565b9d9c50505050505050505050505050565b60006001600160a01b038416611ae25760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b604482015260640161015f565b6000611aec610f66565b9050600080611b07836001600160a01b038d168a8a8e6110c0565b915091506000611b256001600160a01b038d168c8c8a8a8e896122cc565b90506000611a7f858a85611643565b600080611b3f610f66565b905060003415611b5e5750600080516020614bd7833981519152611c83565b60006001600160a01b0386866000818110611b7b57611b7b61494c565b905060200201351690506000600160ff1b87876000818110611b9f57611b9f61494c565b905060200201351660001490508015611c1b57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1491906149c4565b9250611c80565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d91906149c4565b92505b50505b600080611c9384848d8d8d6110c0565b915091506000611ca78c848c8c8c8c612af3565b90506000611a7f868d85611643565b60408601516000908790611d175760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b606482015260840161015f565b805160208201516001600160a01b0391821691611d35911685613010565b9250611d40816130a4565b15611daf57600080516020614bb78339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611deb57898181518110611dce57611dce61494c565b602002602001015182611de191906149e1565b9150600101611db3565b508260400151811115611e5e5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b606482015260840161015f565b508651885114611ea25760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161015f565b60005b8751811015611f0b57611f03878787611eca87602001516001600160a01b03166130a4565b8d8681518110611edc57611edc61494c565b60200260200101518d8781518110611ef657611ef661494c565b60200260200101516130c0565b600101611ea5565b50611f1a826020015185613238565b60208201518390611f34906001600160a01b031686613010565b611f3e91906149b1565b92508160600151831015611f8d5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604482015260640161015f565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614bf78339815191529060a00160405180910390a150509695505050505050565b6033546001600160a01b03163314610ba85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161015f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8015610d7e576000606060e083900361213a576040516001600160a01b038616906120d39063d505accf60e01b90879087906020016149f4565b60408051601f19818403018152908290526120ed91614a18565b6000604051808303816000865af19150503d806000811461212a576040519150601f19603f3d011682016040523d82523d6000602084013e61212f565b606091505b5090925090506121a9565b61010083900361216b576040516001600160a01b038616906120d3906323f2ebc360e21b90879087906020016149f4565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b604482015260640161015f565b816111f1576121df816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b815250613500565b60405162461bcd60e51b815260040161015f9190613f8b565b6000600080516020614bd783398151915283146001811461226c57604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080612261576122616058740519d95d0818985b185b98d953d98819985a5b195960421b611124565b506000519150612271565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af191505080156122c4573d80156122ba57600160005114601f3d111691506122c2565b6000863b1191505b505b949350505050565b60006124fc565b828152600060206000600484600401865afa612308576123086054700419d95d081d1bdad95b8819985a5b195960621b611124565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61235657612356605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611124565b600051915083836004015260206000602485855afa6123975761239760597c1562616c616e63654f662063616c6c206661696c656400000000000000611124565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61235657612356605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611124565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61242e5761242e60587c1472657365727665732063616c6c206661696c65640000000000000000611124565b60005160205186801561245a5789156124525761244b87866123a3565b8390039650505b909190612471565b88156124715761246a8786612313565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156124ab57816004840152600060248401526124b9565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af1610d0b57610d0b605470041cddd85c0818d85b1b0819985a5b195960621b611124565b84602085028101858061252357612523604e6b0b656d70747920706f6f6c7360901b611124565b5060405182358b15600181146125cd5734156125595761255960557111696e76616c6964206d73672e76616c756560581b611124565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af16125c8576125c86056720498db185a5b481d1bdad95b8819985a5b195960521b611124565b61269a565b60018c3410036125f7576125f760557111696e76616c6964206d73672e76616c756560581b611124565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614bb78339815191525af1612644576126446056720499195c1bdcda5d081155120819985a5b195960521b611124565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614bb78339815191525af161269a5761269a605874051d1c985b9cd9995c8815d155120819985a5b195960421b611124565b508a9450602084015b838110156126f95780356126ed6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6123e6565b965091506020016126a3565b5060009350600160fe1b8116801561284757600094506127463063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6123e6565b9550672e1a7d4da9059cbb60c01b835273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a996008840152856028840152602060006044856004016000600080516020614bb78339815191525af16127ba576127ba605874051d1c985b9cd9995c8815d155120819985a5b195960421b611124565b85600484015260206000602485600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af161280c5761280c60577c13776974686472617720455448206661696c6564000000000000000000611124565b600080600080898b5af16128425761284260577c137472616e7366657220455448206661696c6564000000000000000000611124565b612a85565b60009350600160ff1b821680156128f957600160fc1b8316156128f4576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa6128ad576128ad605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611124565b600051955087846004015260206000602486895afa6128ee576128ee60567c15746f6b656e302062616c616e6365206661696c656400000000000000611124565b60005194505b612995565b600160fd1b831615612995576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa61294e5761294e605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611124565b600051955087846004015260206000602486895afa61298f5761298f60597c15746f6b656e312062616c616e6365206661696c656400000000000000611124565b60005194505b506129cd8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6123e6565b95508460001060018114612a3657600160ff1b83168015612a0e57612a076770a082310dfe168160c01b6001600160a01b038616876122d3565b9650612a30565b612a2d6770a08231d21220a760c01b6001600160a01b038616876122d3565b96505b50612a83565b6770a082310dfe168160c01b845287846004015260206000602486895afa612a7b57612a7b6058740519d95d0818985b185b98d953d98819985a5b195960421b611124565b846000510396505b505b505088841015612ab757612ab7605a7c164d696e2072657475726e206e6f742072656163686564000000000000611124565b8a8152826020820152326040820152896060820152836080820152600080516020614bf783398151915260a082a1505050979650505050505050565b6000612f11565b6000856001600160ff1b031015612b1c57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114612bb057630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612ba45760206000fd5b5060206000803e612c13565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612c0b5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612c39576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003612c6157631841b4e160e01b60005260046000fd5b60008060008084600080516020614bb78339815191525af180610db457610db460577c1357455448206465706f736974206661696c6564000000000000000000611124565b60405160048101672e1a7d4da9059cbb60c01b825273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9960048201528360248201526000806044836000600080516020614bb78339815191525af1905080612d2357612d2360587c147472616e736665722077657468206661696c65640000000000000000611124565b836004830152600080602484600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1905080612d7757612d7760587c1477697468647261772077657468206661696c65640000000000000000611124565b60008060008087875af1905080612da857612da8605571045cd95b9908195d1a195c8819985a5b1959605a1b611124565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612dfd57612dfd6055710459d95d081d1bdad95b8c0819985a5b1959605a1b611124565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612dfd57612dfd6054710459d95d081d1bdad95b8c4819985a5b1959605a1b611124565b600080516020614bd78339815191528034612ea3578235600160ff1b81161560018114612e9457612e8d82612e0c565b9350612ea0565b612e9d82612dae565b93505b50505b8335600160fd1b16612ee0578335600160ff1b81161560018114612ed157612eca82612dae565b9250612edd565b612eda82612e0c565b92505b50505b60405182600052816020523260405285608052600080516020614bf783398151915260a06000a16040525050505050565b82601f19602084028201018380612f33576333f3e07b60e11b60005260046000fd5b5088600034118015612f4c57612f4889612c46565b309a505b5087606052825b82811015612f7657612f69898235848e30612afa565b309b509850602001612f53565b506000600160fd1b833516118060018114612f96578015612fb557612fc6565b612fa48a8535858f30612afa565b9550612fb0868c612ca6565b612fc6565b612fc38a8535858f8f612afa565b95505b50505085831015612ff957612ff9605a7c164d696e2072657475726e206e6f742072656163686564000000000000611124565b613004838284612e5d565b50509695505050505050565b600061301b836130a4565b1561303157506001600160a01b0381163161309e565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309b9190614933565b90505b92915050565b6001600160a01b0316600080516020614bd78339815191521490565b60006130f0826000815181106130d8576130d861494c565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b8181101561322b57801561313c576131218682815181106130d8576130d861494c565b94506131366001600160a01b03861630613010565b9650309a505b306131486001846149b1565b82148015613154575088155b156131605750886131f8565b61316b6001846149b1565b821080156131a15750866131808360016149e1565b815181106131905761319061494c565b602002602001015160200151516001145b156131f357866131b28360016149e1565b815181106131c2576131c261494c565b6020026020010151602001516000815181106131e0576131e061494c565b60200260200101519050600194506131f8565b600094505b61321f8c8c838b8b87815181106132115761321161494c565b602002602001015189613663565b508392506001016130fe565b5050505050505050505050565b61324a826001600160a01b03166130a4565b15613472576040516370a0823160e01b8152306004820152600090600080516020614bb7833981519152906370a0823190602401602060405180830381865afa15801561329b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bf9190614933565b905080156133b85760405163a9059cbb60e01b815273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a99600482015260248101829052600080516020614bb78339815191529063a9059cbb906044016020604051808303816000875af115801561332d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133519190614a34565b50604051632e1a7d4d60e01b81526004810182905273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9990632e1a7d4d90602401600060405180830381600087803b15801561339f57600080fd5b505af11580156133b3573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d7e57478015612da8576000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461341c576040519150601f19603f3d011682016040523d82523d6000602084013e613421565b606091505b50509050806111f15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c656400000000604482015260640161015f565b6001600160a01b0381163014610db4576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156134c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ed9190614933565b90508015610d7e57610d7e838383611613565b606060048351106136315760208301516001600160e01b0319811662461bcd60e51b14801561353157506044845110155b156135d1576024848101518086018201805191929091906135539084906149e1565b61355d91906149e1565b865110156135a55760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b604482015260640161015f565b84816040516020016135b8929190614a51565b604051602081830303815290604052935050505061309e565b6001600160e01b03198116634e487b7160e01b1480156135f2575083516024145b1561362f576024840151836136068261381a565b604051602001613617929190614aa0565b6040516020818303038152906040529250505061309e565b505b8161363b84613842565b60405160200161364c929190614ad5565b604051602081830303815290604052905092915050565b6000805b835151811015613810576000846040015182815181106136895761368961494c565b602002602001015160001b90506000806000806136b089608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506136dc82886149e1565b8951519097506136ee906001906149b1565b8603613755576127108711156137555760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b606482015260840161015f565b876137b0576000826127101461378157612710613772848d614978565b61377c919061498f565b613783565b8a5b90506137ae8e8b60200151898151811061379f5761379f61494c565b60200260200101518484613a29565b505b50506137fa81886000015186815181106137cc576137cc61494c565b60200260200101518b858b6060015189815181106137ec576137ec61494c565b60200260200101518f613ac9565b505050808061380890614b26565b915050613667565b5050505050505050565b606061309e8260405160200161383291815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b9060009061386a906002614978565b6138759060026149e1565b6001600160401b0381111561388c5761388c613f9e565b6040519080825280601f01601f1916602001820160405280156138b6576020820181803683370190505b509050600360fc1b816000815181106138d1576138d161494c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106139005761390061494c565b60200101906001600160f81b031916908160001a90535060005b8451811015613a21578260048683815181106139385761393861494c565b01602001516001600160f81b031916901c60f81c6010811061395c5761395c61494c565b1a60f81b8261396c836002614978565b6139779060026149e1565b815181106139875761398761494c565b60200101906001600160f81b031916908160001a905350828582815181106139b1576139b161494c565b60209101015160f81c600f16601081106139cd576139cd61494c565b1a60f81b826139dd836002614978565b6139e89060036149e1565b815181106139f8576139f861494c565b60200101906001600160f81b031916908160001a90535080613a1981614b26565b91505061391a565b509392505050565b306001600160a01b03851603613a4957613a44828483611613565b612da8565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052731d948e5d85b7987ae664b2dc0f34dcf1adc576fc90630a5ea46690608401600060405180830381600087803b158015613ab557600080fd5b505af1158015613810573d6000803e3d6000fd5b8515613be157600080866001600160a01b0316636f7929f260e01b878787604051602401613af993929190614b3f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b476001600160a01b038616650f2882bf0b3360d21b6149e1565b604051602001613b58929190614b74565b60408051601f1981840301815290829052613b7291614a18565b6000604051808303816000865af19150503d8060008114613baf576040519150601f19603f3d011682016040523d82523d6000602084013e613bb4565b606091505b5091509150818190613bd95760405162461bcd60e51b815260040161015f9190613f8b565b505050613ceb565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613c0b93929190614b3f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c596001600160a01b038616650f2882bf0b3360d21b6149e1565b604051602001613c6a929190614b74565b60408051601f1981840301815290829052613c8491614a18565b6000604051808303816000865af19150503d8060008114613cc1576040519150601f19603f3d011682016040523d82523d6000602084013e613cc6565b606091505b5091509150818190610f5b5760405162461bcd60e51b815260040161015f9190613f8b565b505050505050565b60008060408385031215613d0657600080fd5b50508035926020909101359150565b6001600160a01b0381168114610cc457600080fd5b8035613d3581613d15565b919050565b600060a08284031215613d4c57600080fd5b50919050565b60008083601f840112613d6457600080fd5b5081356001600160401b03811115613d7b57600080fd5b6020830191508360208260051b8501011115613d9657600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613dbc57600080fd5b8935985060208a0135613dce81613d15565b9750613ddd8b60408c01613d3a565b965060e08a01356001600160401b0380821115613df957600080fd5b613e058d838e01613d52565b90985096506101008c0135915080821115613e1f57600080fd5b613e2b8d838e01613d52565b90965094506101208c0135915080821115613e4557600080fd5b50613e528c828d01613d52565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215613e8257600080fd5b8635955060208701359450604087013593506060870135613ea281613d15565b925060808701356001600160401b03811115613ebd57600080fd5b613ec989828a01613d52565b979a9699509497509295939492505050565b600080600080600060808688031215613ef357600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115613f1e57600080fd5b613f2a88828901613d52565b969995985093965092949392505050565b60005b83811015613f56578181015183820152602001613f3e565b50506000910152565b60008151808452613f77816020860160208601613f3b565b601f01601f19169290920160200192915050565b6020815260006119da6020830184613f5f565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715613fd657613fd6613f9e565b60405290565b60405161014081016001600160401b0381118282101715613fd657613fd6613f9e565b604051601f8201601f191681016001600160401b038111828210171561402757614027613f9e565b604052919050565b600060a0828403121561404157600080fd5b614049613fb4565b905081358152602082013561405d81613d15565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b038211156140a1576140a1613f9e565b5060051b60200190565b600082601f8301126140bc57600080fd5b813560206140d16140cc83614088565b613fff565b82815260059290921b840181019181810190868411156140f057600080fd5b8286015b8481101561410b57803583529183019183016140f4565b509695505050505050565b600082601f83011261412757600080fd5b813560206141376140cc83614088565b82815260059290921b8401810191818101908684111561415657600080fd5b8286015b8481101561410b57803561416d81613d15565b835291830191830161415a565b600082601f83011261418b57600080fd5b81356001600160401b038111156141a4576141a4613f9e565b6141b7601f8201601f1916602001613fff565b8181528460208386010111156141cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126141fa57600080fd5b8135602061420a6140cc83614088565b82815260059290921b8401810191818101908684111561422957600080fd5b8286015b8481101561410b5780356001600160401b0381111561424c5760008081fd5b61425a8986838b010161417a565b84525091830191830161422d565b60006142766140cc84614088565b838152905060208101600584901b830185101561429257600080fd5b825b8460051b8401811015614402576001600160401b0380823511156142b757600080fd5b8135850187601f8201126142ca57600080fd5b6142d76140cc8235614088565b81358082526020808301929160051b8401018a8111156142f657600080fd5b602084015b818110156143eb57858135111561431157600080fd5b8035850160a0818e03601f1901121561432957600080fd5b614331613fb4565b876020830135111561434257600080fd5b6143548e602080850135850101614116565b8152876040830135111561436757600080fd5b61437a8e60206040850135850101614116565b6020820152876060830135111561439057600080fd5b6143a38e602060608501358501016140ab565b604082015287608083013511156143b957600080fd5b6143cc8e602060808501358501016141e9565b606082015260a0919091013560808201528452602093840193016142fb565b505085525050602092830192919091019050614294565b50509392505050565b600082601f83011261441c57600080fd5b6119da83833560208501614268565b8015158114610cc457600080fd5b8035613d358161442b565b600082601f83011261445557600080fd5b813560206144656140cc83614088565b82815260059290921b8401810191818101908684111561448457600080fd5b8286015b8481101561410b5780356001600160401b03808211156144a85760008081fd5b90880190610140828b03601f19018113156144c35760008081fd5b6144cb613fdc565b87840135815260406144de818601613d2a565b8983015260606144ef818701613d2a565b8284015260809150614502828701613d2a565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120614544818701614439565b8383015292850135928484111561455d57600091508182fd5b61456b8e8b8689010161417a565b90830152508652505050918301918301614488565b600080600080600080610140878903121561459a57600080fd5b6145a4888861402f565b955060a08701356001600160401b03808211156145c057600080fd5b6145cc8a838b016140ab565b965060c08901359150808211156145e257600080fd5b6145ee8a838b0161440b565b955060e089013591508082111561460457600080fd5b5061461189828a01614444565b93505061010087013561462381613d15565b915061012087013561463481613d15565b809150509295509295509295565b600080600080600080600080610120898b03121561465f57600080fd5b883597506146708a60208b01613d3a565b965060c08901356001600160401b038082111561468c57600080fd5b6146988c838d01613d52565b909850965060e08b01359150808211156146b157600080fd5b6146bd8c838d01613d52565b90965094506101008b01359150808211156146d757600080fd5b506146e48b828c01613d52565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561471157600080fd5b61471b878761402f565b945060a08601356001600160401b038082111561473757600080fd5b61474389838a016140ab565b955060c088013591508082111561475957600080fd5b61476589838a0161440b565b945060e088013591508082111561477b57600080fd5b5061478888828901614444565b92505061010086013561479a81613d15565b809150509295509295909350565b6000602082840312156147ba57600080fd5b81356119da81613d15565b60008083601f8401126147d757600080fd5b5081356001600160401b038111156147ee57600080fd5b602083019150836020828501011115613d9657600080fd5b60008060008060008060008060c0898b03121561482257600080fd5b88359750602089013561483481613d15565b9650604089013595506060890135945060808901356001600160401b038082111561485e57600080fd5b61486a8c838d01613d52565b909650945060a08b013591508082111561488357600080fd5b506146e48b828c016147c5565b600080600080606085870312156148a657600080fd5b843593506020850135925060408501356001600160401b038111156148ca57600080fd5b6148d6878288016147c5565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561491c57600080fd5b6119da838361402f565b60006119da368484614268565b60006020828403121561494557600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761309e5761309e614962565b6000826149ac57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561309e5761309e614962565b6000602082840312156149d657600080fd5b81516119da81613d15565b8082018082111561309e5761309e614962565b6001600160e01b031984168152818360048301376000910160040190815292915050565b60008251614a2a818460208701613f3b565b9190910192915050565b600060208284031215614a4657600080fd5b81516119da8161442b565b60008351614a63818460208801613f3b565b6508ae4e4dee4560d31b9083019081528351614a86816006840160208801613f3b565b602960f81b60069290910191820152600701949350505050565b60008351614ab2818460208801613f3b565b650a0c2dcd2c6560d31b9083019081528351614a86816006840160208801613f3b565b60008351614ae7818460208801613f3b565b670aadcd6dcdeeedc560c31b9083019081528351614b0c816008840160208801613f3b565b602960f81b60089290910191820152600901949350505050565b600060018201614b3857614b38614962565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614b6b90830184613f5f565b95945050505050565b60008351614b86818460208801613f3b565b919091019182525060200191905056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212203d78590976b727e72d003cb553c8c1e9ce39bc3e2a0db9edecf90974ae7c66bb64736f6c63430008110033