0 txs
236 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)
version
viewfunction version() view returns (string)
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
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable 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)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614b34806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa951461032b578063fa461e331461033e57600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004613cde565b61035e565b61018a610185366004613d88565b61038a565b6040519081526020015b60405180910390f35b61018a6101ab366004613e54565b61043b565b61018a6101be366004613ec6565b61047d565b61018a6101d1366004613f26565b6104bf565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190613fcb565b61018a6102273660046145c0565b610764565b34801561023857600080fd5b50610254732949a7b2771cc70ecd400871236d345979e1c5e781565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473f828bc75b2b63dac9dd84642acce1bb88e84253181565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba366004613ec6565b6109ca565b61015d6102cd366004614682565b610a01565b61018a6102e03660046146c1565b610b08565b61018a6102f3366004613f26565b610b65565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b506102546006602160991b0181565b61018a610339366004614777565b610dba565b34801561034a57600080fd5b5061015d610359366004614827565b610dca565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038484338484611019565b50505050565b60008760800135428110156103b15760405162461bcd60e51b8152600401610154906148a6565b6040518b8152600080516020614adf8339815191529060200160405180910390a161042c33808c6103e7368e90038e018e6148ce565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042792508d91508e90506148ea565b6113f3565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614adf8339815191529060200160405180910390a1610472878787338888886114ae565b979650505050505050565b60405160a086901c8152600090600080516020614adf8339815191529060200160405180910390a16104b53387600088888888611546565b9695505050505050565b60008360800135428110156104e65760405162461bcd60e51b8152600401610154906148a6565b604051878152600080516020614adf8339815191529060200160405180910390a16000836105565760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b600061056360018661490d565b9050600080600160fd1b88888581811061057f5761057f614920565b905060200201351611905080156105a657600080516020614a9f83398151915292506106c5565b60006001600160a01b038888858181106105c2576105c2614920565b905060200201351690506000600160ff1b8989868181106105e5576105e5614920565b905060200201351660001490508061065e57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106599190614936565b6106c0565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190614936565b945050505b50506001600160a01b0381166106e16040880160208901614953565b6001600160a01b0316146107375760405162461bcd60e51b815260206004820152601f60248201527f746f546f6b656e206d69736d617463682077697468206c61737420706f6f6c006044820152606401610154565b610758336001600160a01b038916883560408a013560608b01358a8a611546565b98975050505050505050565b600086608001514281101561078b5760405162461bcd60e51b8152600401610154906148a6565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107f15760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166108405760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b0385166108895760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b60008960400151116108d45760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190614970565b905060005b89518110156109a6578a60400151828b838151811061096557610965614920565b60200260200101516109779190614989565b61098191906149a0565b8a828151811061099357610993614920565b6020908102919091010152600101610944565b5060408a018190526109bc8a8a8a30898b611761565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614adf8339815191529060200160405180910390a16104b5868686333388886114ae565b600081356001600160a01b038116600080516020614a9f833981519152148015610a4957506006602160991b01610a3e6040850160208601614953565b6001600160a01b0316145b15610a575760009150610af1565b6001600160a01b0381166006602160991b01148015610a9b5750600080516020614a9f833981519152610a906040850160208601614953565b6001600160a01b0316145b15610aa95760019150610af1565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610b018585848660400135611019565b5050505050565b6000876080013542811015610b2f5760405162461bcd60e51b8152600401610154906148a6565b6040518a8152600080516020614adf8339815191529060200160405180910390a16109bc3380806103e7368e90038e018e6148ce565b6000836080013542811015610b8c5760405162461bcd60e51b8152600401610154906148a6565b604051878152600080516020614adf8339815191529060200160405180910390a1600083610bfc5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60008585610c0b60018261490d565b818110610c1a57610c1a614920565b6020029190910135915050600160fe1b811615801590610c4a57600080516020614a9f8339815191529250610d30565b6001600160a01b038216600160ff1b8316151580610cc957816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190614936565b610d2b565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190614936565b945050505b50506001600160a01b038116610d4c6040880160208901614953565b6001600160a01b031614610da25760405162461bcd60e51b815260206004820152601f60248201527f746f546f6b656e206d69736d617463682077697468206c61737420706f6f6c006044820152606401610154565b610758863560408801356060890135338b8a8a6114ae565b60006104b5868686868687610764565b610e6b565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610e0657610e06610dcf565b6000518015610e315760a435600483015260248201819052610e316020600060448582885af1610e36565b505050565b80610e4357610e43610dcf565b600160005114601f3d11163d151780610e6757633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610ea257610ea2610dcf565b6020806004808501335afa610eb957610eb9610dcf565b60206040600460088501335afa610ed257610ed2610dcf565b6000806000881360018114610eee576020519250879150610ef7565b60005192508891505b507fff33128a8fc17869897dce68ed026d694621f6fdfd00000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610f6f57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610fe157826014860152836034860152336054860152816074860152610fdc602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1610e36565b61100e565b336010860152816030860152611004602060006044600c89016000885af1610e36565b61100e8386610dd9565b505050505050505050565b6000811161105e5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000611068611a91565b905060008361108557600080516020614a9f83398151915261108e565b6006602160991b015b90506000806110a08484338a89611b92565b91509150851561125b5760405163052f523360e11b81526006602160991b01600482015233602482015273f828bc75b2b63dac9dd84642acce1bb88e842531604482015260648101869052732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690608401600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810188905273f828bc75b2b63dac9dd84642acce1bb88e8425319250632e1a7d4d9150602401600060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505050506001600160a01b0382163014611256576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146111fe576040519150601f19603f3d011682016040523d82523d6000602084013e611203565b606091505b50509050806112545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b611327565b83516112a9578434146112a95760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b6006602160991b016001600160a01b031663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050506001600160a01b03831630149050611327576113276006602160991b01838761213d565b600061133485898461216d565b9050600080516020614adf8339815191528960405161135591815260200190565b60405180910390a1600080516020614abf8339815191528761138557600080516020614a9f83398151915261138e565b6006602160991b015b886113a0576006602160991b016113b0565b600080516020614a9f8339815191525b604080516001600160a01b0393841681529290911660208301523290820152606081018890526080810188905260a00160405180910390a1505050505050505050565b60006001600160a01b0385166114395760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611443611a91565b905060008061146c8361146089600001516001600160a01b031690565b8c8b8b60400151611b92565b9092509050896000611482898989858f89611761565b90506000611491868c8661216d565b905061149d818361490d565b9d9c50505050505050505050505050565b60006001600160a01b0384166114f45760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b60006114fe611a91565b9050600080611519836001600160a01b038d168a8a8e611b92565b9150915060006115376001600160a01b038d168c8c8a8a8e89612561565b90506000611491858a8561216d565b600080611551611a91565b9050600034156115705750600080516020614a9f833981519152611695565b60006001600160a01b038686600081811061158d5761158d614920565b905060200201351690506000600160ff1b878760008181106115b1576115b1614920565b90506020020135166000149050801561162d57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116269190614936565b9250611692565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168f9190614936565b92505b50505b6001600160a01b0388161561171057806001600160a01b0316886001600160a01b0316146117105760405162461bcd60e51b815260206004820152602260248201527f66726f6d546f6b656e206d69736d61746368207769746820666972737420706f6044820152611bdb60f21b6064820152608401610154565b60008061172084848e8e8d611b92565b9150915060006117348d848c8c8c8c612d73565b90506000611743868e8561216d565b905061174f818361490d565b9e9d5050505050505050505050505050565b604086015160009087906117c25760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b03918216916117e091168561327c565b92506117eb81613310565b15611853576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050503095505b6000805b895181101561188f5789818151811061187257611872614920565b60200260200101518261188591906149c2565b9150600101611857565b5082604001518111156119025760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b5086518851146119465760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b87518110156119af576119a787878761196e87602001516001600160a01b0316613310565b8d868151811061198057611980614920565b60200260200101518d878151811061199a5761199a614920565b602002602001015161332c565b600101611949565b506119be8260200151856134a4565b602082015183906119d8906001600160a01b03168661327c565b6119e2919061490d565b92508160600151831015611a315760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614abf8339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611b605760008560a0015260008560c00152611b8b565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b600080866020015115611bb75730611bae88608001513061375e565b91509150612133565b8651611bc857508290506000612133565b611ec4565b80820281158282048414178402611bec5763ad251c276000526004601cfd5b9290920492915050565b600082821015611c0e576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610e3157610e3160607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72611c13565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af1905080610b0157610b0160577c13636c61696d20746f6b656e73206661696c6564000000000000000000611c13565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80611d3a57611d3a6058740519d95d0818985b185b98d953d98819985a5b195960421b611c13565b600051898801611d65670de0b6b3a764000083611d6084670de0b6b3a76400008e611bcd565b611bcd565b95505080851115611d9857611d9860597c15696e76616c696420616d6f756e74315363616c656400000000000000611c13565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615611dd1573d863b15171591505b81611dfe57611dfe605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c13565b8815611e7357611e0e8582611bf6565b93508860048401528360248401526020600060448560008a5af1915081601f3d1160016000511416151615611e46573d863b15171591505b81611e7357611e73605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c13565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608087015160e088015160a0890151600091901515898414600080516020614a9f83398151915285148b151617611f1d57611f1d605b7c17746f6b656e20616e6420737263206e6f74206d617463680000000000611c13565b610100600080516020614a9f833981519152851402601083028201019250505060008060008060408d015160a08e01516301c9c3808183011115611f8357611f83605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611c13565b60608f01519550808201633b9aca0003828c0204935060c08f01519450808201633b9aca0003818c02049250505084610100811461201657610101811461203957610110811461201657610111811461203957801561207f576001811461209657601081146120c457601181146120f05761201160526e0e696e76616c69642073746174757360701b611c13565b612124565b6120208386611c2f565b6120118584600080516020614a9f833981519152611e80565b6120438386611c2f565b61205c8584600080516020614a9f833981519152611e80565b6120668285611c2f565b6120118483600080516020614a9f833981519152611e80565b61208b83868e8a611c66565b612011858489611e80565b6120a283868e8a611c66565b6120ad858489611e80565b6120b982858e8a611c66565b612011848389611e80565b6120d083308e8a611c66565b6120de60008085888b611ce0565b506120ea86828a611e80565b50612124565b6120fe828401308e8a611c66565b61210b828585888b611ce0565b61211687838b611e80565b61212186828b611e80565b50505b50505050505050836000915091505b9550959350505050565b6121508363a9059cbb60e01b84846137de565b610e315760405163fb7f507960e01b815260040160405180910390fd5b600083602001516121805750600061255a565b604084015160a08501516301c9c38081830111156121c0576121c0605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611c13565b6080860151606087015160405160608101604052600080516020614a9f83398151915283146001811461241757604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa80612248576122486058740519d95d0818985b185b98d953d98819985a5b195960421b611c13565b6000518a81101561226c5761226c604d6a029cdd588819985a5b195960921b611c13565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156122b5573d873b15171591505b816122e2576122e2605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c13565b868552896020860152856040860152600080516020614a7f833981519152606086a187156123a45760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d1160016000511416151615612356573d893b15171593505b8361238357612383605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c13565b88875260208701526040860152600080516020614a7f833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156123e35750843b153d17155b806124105761241060607c1c7472616e7366657220746f6b656e207265636569766572206661696c611c13565b5050612553565b8747101561243857612438604d6a029cdd588819985a5b195960921b611c13565b874703633b9aca008782020497506000806000808b885af18061247d5761247d605d7c197472616e73666572206574682072656665726572206661696c000000611c13565b858452886020850152846040850152600080516020614a7f833981519152606085a1861561250f5760c08c0151633b9aca0083890204998a0199600080808084865af1806124ed576124ed605d7c197472616e73666572206574682072656665726572206661696c000000611c13565b5087865260208601526040850152600080516020614a7f833981519152606085a15b6000806000808c86038f60601b60601c5af190508061255057612550605e7c1a7472616e7366657220657468207265636569766572206661696c0000611c13565b50505b5050505050505b9392505050565b6000612791565b828152600060206000600484600401865afa61259d5761259d6054700419d95d081d1bdad95b8819985a5b195960621b611c13565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa6125eb576125eb605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611c13565b600051915083836004015260206000602485855afa61262c5761262c60597c1562616c616e63654f662063616c6c206661696c656400000000000000611c13565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa6125eb576125eb605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611c13565b668b0367c240bc6b60c21b8152600060406000600484600401875afa6126c3576126c360587c1472657365727665732063616c6c206661696c65640000000000000000611c13565b6000516020518680156126ef5789156126e7576126e08786612638565b8390039650505b909190612706565b8815612706576126ff87866125a8565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612740578160048401526000602484015261274e565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161075857610758605470041cddd85c0818d85b1b0819985a5b195960621b611c13565b8460208502810185806127b8576127b8604e6b0b656d70747920706f6f6c7360901b611c13565b5060405182358b15600181146128625734156127ee576127ee60557111696e76616c6964206d73672e76616c756560581b611c13565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af161285d5761285d6056720498db185a5b481d1bdad95b8819985a5b195960521b611c13565b612921565b60018c34100361288c5761288c60557111696e76616c6964206d73672e76616c756560581b611c13565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af16128d2576128d26056720499195c1bdcda5d081155120819985a5b195960521b611c13565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af161292157612921605874051d1c985b9cd9995c8815d155120819985a5b195960421b611c13565b508a9450602084015b838110156129805780356129746001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b61267b565b9650915060200161292a565b5060009350600160fe1b81168015612ac757600094506129cd3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61267b565b9550672e1a7d4da9059cbb60c01b835273f828bc75b2b63dac9dd84642acce1bb88e84253160088401528560288401526020600060448560040160006006602160991b015af1612a3a57612a3a605874051d1c985b9cd9995c8815d155120819985a5b195960421b611c13565b85600484015260206000602485600073f828bc75b2b63dac9dd84642acce1bb88e8425315af1612a8c57612a8c60577c13776974686472617720455448206661696c6564000000000000000000611c13565b600080600080898b5af1612ac257612ac260577c137472616e7366657220455448206661696c6564000000000000000000611c13565b612d05565b60009350600160ff1b82168015612b7957600160fc1b831615612b74576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612b2d57612b2d605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611c13565b600051955087846004015260206000602486895afa612b6e57612b6e60567c15746f6b656e302062616c616e6365206661696c656400000000000000611c13565b60005194505b612c15565b600160fd1b831615612c15576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612bce57612bce605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611c13565b600051955087846004015260206000602486895afa612c0f57612c0f60597c15746f6b656e312062616c616e6365206661696c656400000000000000611c13565b60005194505b50612c4d8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61267b565b95508460001060018114612cb657600160ff1b83168015612c8e57612c876770a082310dfe168160c01b6001600160a01b03861687612568565b9650612cb0565b612cad6770a08231d21220a760c01b6001600160a01b03861687612568565b96505b50612d03565b6770a082310dfe168160c01b845287846004015260206000602486895afa612cfb57612cfb6058740519d95d0818985b185b98d953d98819985a5b195960421b611c13565b846000510396505b505b505088841015612d3757612d37605a7c164d696e2072657475726e206e6f742072656163686564000000000000611c13565b8a8152826020820152326040820152896060820152836080820152600080516020614abf83398151915260a082a1505050979650505050505050565b600061317d565b6000856001600160ff1b031015612d9c57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114612e3057630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612e245760206000fd5b5060206000803e612e93565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612e8b5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612eb9576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003612ee157631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610e6757610e6760577c1357455448206465706f736974206661696c6564000000000000000000611c13565b60405160048101672e1a7d4da9059cbb60c01b825273f828bc75b2b63dac9dd84642acce1bb88e842531600482015283602482015260008060448360006006602160991b015af1905080612f9557612f9560587c147472616e736665722077657468206661696c65640000000000000000611c13565b836004830152600080602484600073f828bc75b2b63dac9dd84642acce1bb88e8425315af1905080612fe957612fe960587c1477697468647261772077657468206661696c65640000000000000000611c13565b60008060008087875af190508061038457610384605571045cd95b9908195d1a195c8819985a5b1959605a1b611c13565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080613069576130696055710459d95d081d1bdad95b8c0819985a5b1959605a1b611c13565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080613069576130696054710459d95d081d1bdad95b8c4819985a5b1959605a1b611c13565b600080516020614a9f833981519152803461310f578235600160ff1b81161560018114613100576130f982613078565b935061310c565b6131098261301a565b93505b50505b8335600160fd1b1661314c578335600160ff1b8116156001811461313d576131368261301a565b9250613149565b61314682613078565b92505b50505b60405182600052816020523260405285608052600080516020614abf83398151915260a06000a16040525050505050565b82601f1960208402820101838061319f576333f3e07b60e11b60005260046000fd5b50886000341180156131b8576131b489612ec6565b309a505b5087606052825b828110156131e2576131d5898235848e30612d7a565b309b5098506020016131bf565b506000600160fd1b83351611806001811461320257801561322157613232565b6132108a8535858f30612d7a565b955061321c868c612f1f565b613232565b61322f8a8535858f8f612d7a565b95505b5050508583101561326557613265605a7c164d696e2072657475726e206e6f742072656163686564000000000000611c13565b6132708382846130c9565b50509695505050505050565b600061328783613310565b1561329d57506001600160a01b0381163161330a565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156132e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133079190614970565b90505b92915050565b6001600160a01b0316600080516020614a9f8339815191521490565b600061335c8260008151811061334457613344614920565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b818110156134975780156133a85761338d86828151811061334457613344614920565b94506133a26001600160a01b0386163061327c565b9650309a505b306133b460018461490d565b821480156133c0575088155b156133cc575088613464565b6133d760018461490d565b8210801561340d5750866133ec8360016149c2565b815181106133fc576133fc614920565b602002602001015160200151516001145b1561345f578661341e8360016149c2565b8151811061342e5761342e614920565b60200260200101516020015160008151811061344c5761344c614920565b6020026020010151905060019450613464565b600094505b61348b8c8c838b8b878151811061347d5761347d614920565b602002602001015189613832565b5083925060010161336a565b5050505050505050505050565b6134b6826001600160a01b0316613310565b156136d0576040516370a0823160e01b81523060048201526000906006602160991b01906370a0823190602401602060405180830381865afa158015613500573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135249190614970565b905080156136165760405163a9059cbb60e01b815273f828bc75b2b63dac9dd84642acce1bb88e8425316004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af115801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af91906149d5565b50604051632e1a7d4d60e01b81526004810182905273f828bc75b2b63dac9dd84642acce1bb88e84253190632e1a7d4d90602401600060405180830381600087803b1580156135fd57600080fd5b505af1158015613611573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610e3157478015610384576000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461367a576040519150601f19603f3d011682016040523d82523d6000602084013e61367f565b606091505b5050905080610b015760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610e67576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374b9190614970565b90508015610e3157610e3183838361213d565b6000600080516020614a9f8339815191528314600181146137d257604051602481016040526370a0823160e01b815283600482015260206000602483885afa9050806137c7576137c76058740519d95d0818985b185b98d953d98819985a5b195960421b611c13565b5060005191506137d7565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af1915050801561382a573d801561382057600160005114601f3d11169150613828565b6000863b1191505b505b949350505050565b6000805b8351518110156139df5760008460400151828151811061385857613858614920565b602002602001015160001b905060008060008061387f89608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506138ab82886149c2565b8951519097506138bd9060019061490d565b8603613924576127108711156139245760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b8761397f576000826127101461395057612710613941848d614989565b61394b91906149a0565b613952565b8a5b905061397d8e8b60200151898151811061396e5761396e614920565b602002602001015184846139e9565b505b50506139c9818860000151868151811061399b5761399b614920565b60200260200101518b858b6060015189815181106139bb576139bb614920565b60200260200101518f613a89565b50505080806139d7906149f2565b915050613836565b5050505050505050565b306001600160a01b03851603613a0957613a0482848361213d565b610384565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690608401600060405180830381600087803b158015613a7557600080fd5b505af11580156139df573d6000803e3d6000fd5b8515613b8e57600080866001600160a01b0316636f7929f260e01b878787604051602401613ab993929190614a0b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b076001600160a01b038616650f2882bf0b3360d21b6149c2565b604051602001613b18929190614a40565b60408051601f1981840301815290829052613b3291614a62565b6000604051808303816000865af19150503d8060008114613b6f576040519150601f19603f3d011682016040523d82523d6000602084013e613b74565b606091505b509150915081613b8757613b8781613c8e565b5050613c86565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613bb893929190614a0b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c066001600160a01b038616650f2882bf0b3360d21b6149c2565b604051602001613c17929190614a40565b60408051601f1981840301815290829052613c3191614a62565b6000604051808303816000865af19150503d8060008114613c6e576040519150601f19603f3d011682016040523d82523d6000602084013e613c73565b606091505b5091509150816139df576139df81613c8e565b505050505050565b805115613c9d57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b60008060408385031215613cf157600080fd5b50508035926020909101359150565b6001600160a01b0381168114613cdb57600080fd5b8035613d2081613d00565b919050565b600060a08284031215613d3757600080fd5b50919050565b60008083601f840112613d4f57600080fd5b5081356001600160401b03811115613d6657600080fd5b6020830191508360208260051b8501011115613d8157600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613da757600080fd5b8935985060208a0135613db981613d00565b9750613dc88b60408c01613d25565b965060e08a01356001600160401b0380821115613de457600080fd5b613df08d838e01613d3d565b90985096506101008c0135915080821115613e0a57600080fd5b613e168d838e01613d3d565b90965094506101208c0135915080821115613e3057600080fd5b50613e3d8c828d01613d3d565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215613e6d57600080fd5b8635955060208701359450604087013593506060870135613e8d81613d00565b925060808701356001600160401b03811115613ea857600080fd5b613eb489828a01613d3d565b979a9699509497509295939492505050565b600080600080600060808688031215613ede57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115613f0957600080fd5b613f1588828901613d3d565b969995985093965092949392505050565b60008060008060006101008688031215613f3f57600080fd5b853594506020860135613f5181613d00565b9350613f608760408801613d25565b925060e08601356001600160401b03811115613f0957600080fd5b60005b83811015613f96578181015183820152602001613f7e565b50506000910152565b60008151808452613fb7816020860160208601613f7b565b601f01601f19169290920160200192915050565b60208152600061255a6020830184613f9f565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561401657614016613fde565b60405290565b60405161014081016001600160401b038111828210171561401657614016613fde565b604051601f8201601f191681016001600160401b038111828210171561406757614067613fde565b604052919050565b600060a0828403121561408157600080fd5b614089613ff4565b905081358152602082013561409d81613d00565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b038211156140e1576140e1613fde565b5060051b60200190565b600082601f8301126140fc57600080fd5b8135602061411161410c836140c8565b61403f565b82815260059290921b8401810191818101908684111561413057600080fd5b8286015b8481101561414b5780358352918301918301614134565b509695505050505050565b600082601f83011261416757600080fd5b8135602061417761410c836140c8565b82815260059290921b8401810191818101908684111561419657600080fd5b8286015b8481101561414b5780356141ad81613d00565b835291830191830161419a565b600082601f8301126141cb57600080fd5b81356001600160401b038111156141e4576141e4613fde565b6141f7601f8201601f191660200161403f565b81815284602083860101111561420c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261423a57600080fd5b8135602061424a61410c836140c8565b82815260059290921b8401810191818101908684111561426957600080fd5b8286015b8481101561414b5780356001600160401b0381111561428c5760008081fd5b61429a8986838b01016141ba565b84525091830191830161426d565b60006142b661410c846140c8565b838152905060208101600584901b83018510156142d257600080fd5b825b8460051b8401811015614442576001600160401b0380823511156142f757600080fd5b8135850187601f82011261430a57600080fd5b61431761410c82356140c8565b81358082526020808301929160051b8401018a81111561433657600080fd5b602084015b8181101561442b57858135111561435157600080fd5b8035850160a0818e03601f1901121561436957600080fd5b614371613ff4565b876020830135111561438257600080fd5b6143948e602080850135850101614156565b815287604083013511156143a757600080fd5b6143ba8e60206040850135850101614156565b602082015287606083013511156143d057600080fd5b6143e38e602060608501358501016140eb565b604082015287608083013511156143f957600080fd5b61440c8e60206080850135850101614229565b606082015260a09190910135608082015284526020938401930161433b565b5050855250506020928301929190910190506142d4565b50509392505050565b600082601f83011261445c57600080fd5b61255a838335602085016142a8565b8015158114613cdb57600080fd5b8035613d208161446b565b600082601f83011261449557600080fd5b813560206144a561410c836140c8565b82815260059290921b840181019181810190868411156144c457600080fd5b8286015b8481101561414b5780356001600160401b03808211156144e85760008081fd5b90880190610140828b03601f19018113156145035760008081fd5b61450b61401c565b878401358152604061451e818601613d15565b89830152606061452f818701613d15565b8284015260809150614542828701613d15565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120614584818701614479565b8383015292850135928484111561459d57600091508182fd5b6145ab8e8b868901016141ba565b908301525086525050509183019183016144c8565b60008060008060008061014087890312156145da57600080fd5b6145e4888861406f565b955060a08701356001600160401b038082111561460057600080fd5b61460c8a838b016140eb565b965060c089013591508082111561462257600080fd5b61462e8a838b0161444b565b955060e089013591508082111561464457600080fd5b5061465189828a01614484565b93505061010087013561466381613d00565b915061012087013561467481613d00565b809150509295509295509295565b600080600060e0848603121561469757600080fd5b8335925060208401356146a981613d00565b91506146b88560408601613d25565b90509250925092565b600080600080600080600080610120898b0312156146de57600080fd5b883597506146ef8a60208b01613d25565b965060c08901356001600160401b038082111561470b57600080fd5b6147178c838d01613d3d565b909850965060e08b013591508082111561473057600080fd5b61473c8c838d01613d3d565b90965094506101008b013591508082111561475657600080fd5b506147638b828c01613d3d565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561479057600080fd5b61479a878761406f565b945060a08601356001600160401b03808211156147b657600080fd5b6147c289838a016140eb565b955060c08801359150808211156147d857600080fd5b6147e489838a0161444b565b945060e08801359150808211156147fa57600080fd5b5061480788828901614484565b92505061010086013561481981613d00565b809150509295509295909350565b6000806000806060858703121561483d57600080fd5b843593506020850135925060408501356001600160401b038082111561486257600080fd5b818701915087601f83011261487657600080fd5b81358181111561488557600080fd5b88602082850101111561489757600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a082840312156148e057600080fd5b61255a838361406f565b600061255a3684846142a8565b634e487b7160e01b600052601160045260246000fd5b8181038181111561330a5761330a6148f7565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561494857600080fd5b815161255a81613d00565b60006020828403121561496557600080fd5b813561255a81613d00565b60006020828403121561498257600080fd5b5051919050565b808202811582820484141761330a5761330a6148f7565b6000826149bd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561330a5761330a6148f7565b6000602082840312156149e757600080fd5b815161255a8161446b565b600060018201614a0457614a046148f7565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614a3790830184613f9f565b95945050505050565b60008351614a52818460208801613f7b565b9190910191825250602001919050565b60008251614a74818460208701613f7b565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212201eb35ad0ee976b87b10221fca430aeccaf8012208c1a1528f0e2a90ced92edc864736f6c63430008110033