1 tx
33 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)
admin
viewfunction admin() view returns (address)
approveProxy
viewfunction approveProxy() view returns (address)
feeRateAndReceiver_UNUSED
viewfunction feeRateAndReceiver_UNUSED() view returns (uint256)
operator_UNUSED
viewfunction operator_UNUSED(address) view returns (address)
orderRemaining_UNUSED
viewfunction orderRemaining_UNUSED(bytes32) view returns (uint256)
owner
viewfunction owner() view returns (address)
priorityAddresses
viewfunction priorityAddresses(address) view returns (bool)
validSigner
viewfunction validSigner(address) view returns (bool)
wNativeRelayer
viewfunction wNativeRelayer() view returns (address)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setPriorityAddress
nonpayablefunction setPriorityAddress(address _priorityAddress, bool valid)
setProtocolAdmin
nonpayablefunction setProtocolAdmin(address _newAdmin)
setValidSigner
nonpayablefunction setValidSigner(address _signer, bool valid)
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)
smartSwapByOrderIdByXBridge
payablefunction smartSwapByOrderIdByXBridge(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)
uniswapV3SwapToByXBridge
payablefunction uniswapV3SwapToByXBridge(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)
unxswapByOrderIdByXBridge
payablefunction unxswapByOrderIdByXBridge(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)
PriorityAddressChanged
event PriorityAddressChanged(address priorityAddress, bool valid)
SwapOrderId
event SwapOrderId(uint256 id)
ValidSignerChanged
event ValidSignerChanged(address signer, bool valid)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b5061576780620000216000396000f3fe6080604052600436106101dc5760003560e01c80639871efa411610102578063e0af361611610095578063f3dced3c11610064578063f3dced3c14610572578063f3e144b614610592578063f851a440146105b2578063fa461e33146105d257600080fd5b8063e0af3616146104f0578063e99bfa9514610512578063f1489b9f14610525578063f2fde38b1461055257600080fd5b8063d13a35e6116100d1578063d13a35e614610494578063d1b260d4146104b4578063d3507df5146104c7578063d8837daf146104dd57600080fd5b80639871efa41461041e5780639a09b28514610431578063b80c2f0914610451578063ba6f8b0e1461046457600080fd5b80636aa476451161017a5780638129fc1c116101495780638129fc1c146103985780638575654f146103ad578063869c6b4b146103c05780638da5cb5b1461040057600080fd5b80636aa4764514610313578063715018a61461033b57806373679b6b14610350578063779e45fc1461037857600080fd5b80630d5f0e3b116101b65780630d5f0e3b1461027f57806327f9fa1e146102925780635407dae7146102e0578063591b3d081461030057600080fd5b806301617fab1461023357806303b87e5f1461024657806308298b5a1461026c57600080fd5b3661022e5732330361022c5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61022c6102413660046146e2565b6105f2565b61025961025436600461478c565b610a52565b6040519081526020015b60405180910390f35b61025961027a366004614858565b610b16565b61025961028d3660046148ca565b610b58565b34801561029e57600080fd5b506102c86102ad36600461492a565b60b4602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156102ec57600080fd5b5061022c6102fb366004614960565b610b98565b61025961030e366004614f57565b610c3b565b34801561031f57600080fd5b506102c873bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9981565b34801561034757600080fd5b5061022c610ebc565b34801561035c57600080fd5b506102c873f4858d71e5d7d27e3f7270390cd57545dca35aa981565b34801561038457600080fd5b5061022c610393366004614960565b610ed0565b3480156103a457600080fd5b5061022c610f6b565b6102596103bb3660046148ca565b611085565b3480156103cc57600080fd5b506103f06103db36600461492a565b60996020526000908152604090205460ff1681565b6040519015158152602001610263565b34801561040c57600080fd5b506033546001600160a01b03166102c8565b61025961042c3660046148ca565b611188565b34801561043d57600080fd5b5061022c61044c36600461492a565b6111bf565b61025961045f366004615019565b61124c565b34801561047057600080fd5b506103f061047f36600461492a565b60ac6020526000908152604090205460ff1681565b3480156104a057600080fd5b506098546102c8906001600160a01b031681565b6102596104c2366004615019565b6112ca565b3480156104d357600080fd5b5061025960b65481565b6102596104eb3660046148ca565b611451565b3480156104fc57600080fd5b506102c86000805160206156d283398151915281565b6102596105203660046150cf565b611550565b34801561053157600080fd5b5061025961054036600461517f565b60b56020526000908152604090205481565b34801561055e57600080fd5b5061022c61056d36600461492a565b611560565b34801561057e57600080fd5b506097546102c8906001600160a01b031681565b34801561059e57600080fd5b506102596105ad3660046151d9565b6115d6565b3480156105be57600080fd5b5060ad546102c8906001600160a01b031681565b3480156105de57600080fd5b5061022c6105ed366004615263565b611624565b600160ff1b81166001600160801b038216806106455760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610223565b600061064f611873565b90506000836106725773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610682565b6000805160206156d28339815191525b905060008061069d84843333896001600160801b0316611a05565b91509150851561086f5760405163052f523360e11b81526000805160206156d2833981519152600482015233602482015273f4858d71e5d7d27e3f7270390cd57545dca35aa960448201526001600160801b038616606482015273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9990630a5ea46690608401600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b038816600482015273f4858d71e5d7d27e3f7270390cd57545dca35aa99250632e1a7d4d9150602401600060405180830381600087803b15801561079d57600080fd5b505af11580156107b1573d6000803e3d6000fd5b505050506001600160a01b038216301461086a576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114610812576040519150601f19603f3d011682016040523d82523d6000602084013e610817565b606091505b50509050806108685760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b505b610964565b83516108c657846001600160801b031634146108c65760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610223565b6000805160206156d28339815191526001600160a01b031663d0e30db0866001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561091857600080fd5b505af115801561092c573d6000803e3d6000fd5b505050506001600160a01b03831630149050610964576109646000805160206156d283398151915283876001600160801b0316611d32565b6000610971853384611d62565b90506000805160206157128339815191528960405161099291815260200190565b60405180910390a16000805160206156f2833981519152876109c85773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6109d8565b6000805160206156d28339815191525b886109f1576000805160206156d2833981519152610a07565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015232908201526001600160801b03881660608201819052608082015260a00160405180910390a1505050505050505050565b6000876080013542811015610a795760405162461bcd60e51b8152600401610223906152b5565b610a81612106565b6040518b81526000805160206157128339815191529060200160405180910390a1610afc33808c610ab7368e90038e018e6152dd565b8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610af792508d91508e90506152f9565b61215f565b9150610b086001606555565b509998505050505050505050565b60405160a087901c81526000906000805160206157128339815191529060200160405180910390a1610b4d87878733888888612221565b979650505050505050565b60405160a086901c81526000906000805160206157128339815191529060200160405180910390a1610b8e3387878787876122b9565b9695505050505050565b60ad546001600160a01b0316331480610bbb57506033546001600160a01b031633145b610bd75760405162461bcd60e51b815260040161022390615306565b6001600160a01b038216600081815260ac6020908152604091829020805460ff19168515159081179091558251938452908301527f99c95860270e4e43c2905da4436ffec551108238dc3dd6b2cf48cb74c591f9d291015b60405180910390a15050565b6000866080015142811015610c625760405162461bcd60e51b8152600401610223906152b5565b610c6a612106565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed198101610cd05760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610223565b6001600160a01b038416610d1f5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610223565b6001600160a01b038516610d685760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610223565b6000896040015111610db35760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610223565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190615322565b905060005b8951811015610e85578a60400151828b8381518110610e4457610e4461533b565b6020026020010151610e569190615367565b610e60919061537e565b8a8281518110610e7257610e7261533b565b6020908102919091010152600101610e23565b5060408a01819052610e95612441565b610ea38a8a8a30898b6125d7565b93505050610eb16001606555565b509695505050505050565b610ec461290e565b610ece6000612968565b565b60ad546001600160a01b0316331480610ef357506033546001600160a01b031633145b610f0f5760405162461bcd60e51b815260040161022390615306565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e2079101610c2f565b600054610100900460ff1615808015610f8b5750600054600160ff909116105b80610fa55750303b158015610fa5575060005460ff166001145b6110085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610223565b6000805460ff19166001179055801561102b576000805461ff0019166101001790555b6110336129ba565b61103b6129e9565b8015611082576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50565b3360009081526099602052604081205460ff1615156001146110b95760405162461bcd60e51b8152600401610223906153a0565b60405160a087901c81526000805160206157128339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561111e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906153c7565b90925090506001600160a01b03811661116d5760405162461bcd60e51b8152600401610223906153f6565b61117c88888885858a8a612221565b98975050505050505050565b60405160a086901c81526000906000805160206157128339815191529060200160405180910390a1610b8e86868633338888612221565b60ad546001600160a01b03163314806111e257506033546001600160a01b031633145b6111fe5760405162461bcd60e51b815260040161022390615306565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001611079565b60008760800135428110156112735760405162461bcd60e51b8152600401610223906152b5565b61127b612106565b6040518a81526000805160206157128339815191529060200160405180910390a16112b1338080610ab7368e90038e018e6152dd565b91506112bd6001606555565b5098975050505050505050565b60008760800135428110156112f15760405162461bcd60e51b8152600401610223906152b5565b6112f9612106565b3360009081526099602052604090205460ff16151560011461132d5760405162461bcd60e51b8152600401610223906153a0565b6040518a81526000805160206157128339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561138e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b291906153c7565b90925090506001600160a01b0381166113dd5760405162461bcd60e51b8152600401610223906153f6565b6114438283838e8036038101906113f491906152dd565b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d90610af791906152f9565b935050506112bd6001606555565b3360009081526099602052604081205460ff1615156001146114855760405162461bcd60e51b8152600401610223906153a0565b60405160a087901c81526000805160206157128339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e91906153c7565b90925090506001600160a01b0381166115395760405162461bcd60e51b8152600401610223906153f6565b61117c82826001600160a01b0316898989896122b9565b6000610b8e868686868687610c3b565b61156861290e565b6001600160a01b0381166115cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610223565b61108281612968565b60405160a089901c81526000906000805160206157128339815191529060200160405180910390a1611609888484612a18565b611617338a898989896122b9565b9998505050505050505050565b6116c5565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa61166057611660611629565b600051801561168b5760a43560048301526024820181905261168b6020600060448582885af1611690565b505050565b8061169d5761169d611629565b600160005114601f3d11163d1517806116c157633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa6116fc576116fc611629565b6020806004808501335afa61171357611713611629565b60206040600460088501335afa61172c5761172c611629565b6000806000881360018114611748576020519250879150611751565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146117c957635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b84523083146001811461183b5782601486015283603486015233605486015281607486015261183660206000608460108901600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1611690565b611868565b33601086015281603086015261185e602060006044600c89016000885af1611690565b6118688386611633565b505050505050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526118b4612441565b61190c565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b6000828210156119075761190760587c147375627472616374696f6e206f766572666c6f7700000000000000006118b9565b500390565b6040805160e00190526119206080366118d5565b356001600160d01b031981166522220afc2bbb60d01b8114651111057e155560d11b821417651111057e155560d11b8214651e51057e155560d11b83141784526522220afc2bbb60d01b8214653ca20afc2bbb60d01b831417846020015265ffffffffffff60a01b831660a01c84604001526001600160a01b03831684606001526001600160a01b0360a036033516846080015260018114600181146119d35760008560a0015260008560c001526119fe565b60c0360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b600080866020015115611a2a5730611a21886080015130612b7e565b91509150611d28565b8651611a3b57508290506000611d28565b604087015160a08801518082016301c9c380811115611a7c57611a7c605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d6974006118b9565b60808a015189811473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82148b151617611acb57611acb605b7c17746f6b656e20616e6420737263206e6f74206d6174636800000000006118b9565b60608b015182633b9aca000385890204945073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee821460018114611b76576040516084810160405263052f523360e11b81528360048201528b6024820152826044820152866064820152600080608483600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1905080611b7057611b7060577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b6118b9565b50611baf565b60008060008089865af180611bad57611bad605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f72006118b9565b505b50604051606081016040528281528560208201528160408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150508215611d1c5760c08b0151935081633b9aca00038388020473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee821460018114611ca1576040516084810160405263052f523360e11b81528360048201528b6024820152866044820152826064820152600080608483600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1905080611c9b57611c9b60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b6118b9565b50611cda565b600080600080858a5af180611cd857611cd8605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f72006118b9565b505b50604051606081016040528281528160208201528560408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505b50505050836000915091505b9550959350505050565b611d458363a9059cbb60e01b8484612c04565b61168b5760405163fb7f507960e01b815260040160405180910390fd5b60008360200151611d75575060006120ff565b604084015160a08501516301c9c3808183011115611db557611db5605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d6974006118b9565b608086015160608701516040516060810160405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee831460018114611fbc57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa80611e4357611e436058740519d95d0818985b185b98d953d98819985a5b195960421b6118b9565b6000518a811015611e6757611e67604d6a029cdd588819985a5b195960921b6118b9565b8a81039050633b9aca0089820204995085600c84015289602c84015260008060446008860160008b5af1915081611ec057611ec0605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c006118b9565b8685528960208601528560408601526000805160206156b2833981519152606086a18715611f655760c08d0151633b9aca0089830204808c019b5081600886015280602886015260008060446004880160008d5af1935083611f4457611f44605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c006118b9565b888752602087015260408601526000805160206156b2833981519152606086a15b6001600160a01b038c1660048401528990036024830152600080604484828a5af1905080611fb557611fb560607c1c7472616e7366657220746f6b656e207265636569766572206661696c6118b9565b50506120f8565b87471015611fdd57611fdd604d6a029cdd588819985a5b195960921b6118b9565b874703633b9aca008782020497506000806000808b885af18061202257612022605d7c197472616e73666572206574682072656665726572206661696c0000006118b9565b8584528860208501528460408501526000805160206156b2833981519152606085a186156120b45760c08c0151633b9aca0083890204998a0199600080808084865af18061209257612092605d7c197472616e73666572206574682072656665726572206661696c0000006118b9565b50878652602086015260408501526000805160206156b2833981519152606085a15b6000806000808c86038f60601b60601c5af19050806120f5576120f5605e7c1a7472616e7366657220657468207265636569766572206661696c00006118b9565b50505b5050505050505b9392505050565b6002606554036121585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610223565b6002606555565b60006001600160a01b0385166121a55760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b60006121af611873565b90506000806121d8836121cc89600001516001600160a01b031690565b8c8b8b60400151611a05565b90925090508960006121ee898989858f896125d7565b905060006121fd868c86611d62565b9050612209818361541e565b9d9c50505050505050505050505050565b6001606555565b60006001600160a01b0384166122675760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b6000612271611873565b905060008061228c836001600160a01b038d168a8a8e611a05565b9150915060006122aa6001600160a01b038d168c8c8a8a8e89612c58565b905060006121fd858a85611d62565b6000806122c4611873565b9050600034156122e9575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61240e565b60006001600160a01b03868660008181106123065761230661533b565b905060200201351690506000600160ff1b8787600081811061232a5761232a61533b565b9050602002013516600014905080156123a657816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190615431565b925061240b565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190615431565b92505b50505b60008061241e84848d8d8d611a05565b9150915060006124328c848c8c8c8c61347f565b905060006121fd868d85611d62565b60007fc0badfdeb4a0dfe2dc31d578b5df74f7e294f9617bc9d459ca2f9af5c484425161246f6060366118d5565b356001600160d01b031981166555555555555560d11b81036125655765ffffffffffff60a01b821660a01c7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0602036033511156124e6576124e660557111496e76616c69645369676e61747572655360581b6118b9565b42811115612563576040805160808082018352338252602082018781528284018581524660608501529183207f19457468657265756d205369676e6564204d6573736167653a0a3332000000008452601c840152603c8320835260ff8716905290919036603f190190376020600060808360015afa505060005194505b505b50506001600160a01b0382161580159061259757506001600160a01b038216600090815260ac602052604090205460ff165b6116c15760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610223565b604086015160009087906126385760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610223565b805160208201516001600160a01b03918216916126569116856139a2565b925061266181613a36565b156126d0576000805160206156d28339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156126b357600080fd5b505af11580156126c7573d6000803e3d6000fd5b50505050503095505b6000805b895181101561270c578981815181106126ef576126ef61533b565b602002602001015182612702919061544e565b91506001016126d4565b50826040015181111561277f5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610223565b5086518851146127c35760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610223565b60005b875181101561282c576128248787876127eb87602001516001600160a01b0316613a36565b8d86815181106127fd576127fd61533b565b60200260200101518d87815181106128175761281761533b565b6020026020010151613a58565b6001016127c6565b5061283b826020015185613bd0565b60208201518390612855906001600160a01b0316866139a2565b61285f919061541e565b925081606001518310156128ae5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610223565b60208083015160408085015181516001600160a01b0380871682529093169383019390935232908201526060810191909152608081018490526000805160206156f28339815191529060a00160405180910390a150509695505050505050565b6033546001600160a01b03163314610ece5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610223565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166129e15760405162461bcd60e51b815260040161022390615461565b610ece613e98565b600054610100900460ff16612a105760405162461bcd60e51b815260040161022390615461565b610ece613ec8565b801561168b576000606060e0839003612ab9576040516001600160a01b03861690612a529063d505accf60e01b90879087906020016154ac565b60408051601f1981840301815290829052612a6c916154f4565b6000604051808303816000865af19150503d8060008114612aa9576040519150601f19603f3d011682016040523d82523d6000602084013e612aae565b606091505b509092509050612b28565b610100839003612aea576040516001600160a01b03861690612a52906323f2ebc360e21b90879087906020016154ac565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610223565b81612b7757612b5e816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b815250613eef565b60405162461bcd60e51b8152600401610223919061553c565b5050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee831460018114612bf857604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080612bed57612bed6058740519d95d0818985b185b98d953d98819985a5b195960421b6118b9565b506000519150612bfd565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015612c50573d8015612c4657600160005114601f3d11169150612c4e565b6000863b1191505b505b949350505050565b6000612e88565b828152600060206000600484600401865afa612c9457612c946054700419d95d081d1bdad95b8819985a5b195960621b6118b9565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa612ce257612ce2605672049d1bdad95b8c0818d85b1b0819985a5b195960521b6118b9565b600051915083836004015260206000602485855afa612d2357612d2360597c1562616c616e63654f662063616c6c206661696c6564000000000000006118b9565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa612ce257612ce2605672049d1bdad95b8c4818d85b1b0819985a5b195960521b6118b9565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612dba57612dba60587c1472657365727665732063616c6c206661696c656400000000000000006118b9565b600051602051868015612de6578915612dde57612dd78786612d2f565b8390039650505b909190612dfd565b8815612dfd57612df68786612c9f565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612e375781600484015260006024840152612e45565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161117c5761117c605470041cddd85c0818d85b1b0819985a5b195960621b6118b9565b846020850281018580612eaf57612eaf604e6b0b656d70747920706f6f6c7360901b6118b9565b5060405182358b1560018114612f59573415612ee557612ee560557111696e76616c6964206d73672e76616c756560581b6118b9565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1612f5457612f546056720498db185a5b481d1bdad95b8819985a5b195960521b6118b9565b613026565b60018c341003612f8357612f8360557111696e76616c6964206d73672e76616c756560581b6118b9565b670a9059cbbd0e30db60c41b835260008060048086018f6000805160206156d28339815191525af1612fd057612fd06056720499195c1bdcda5d081155120819985a5b195960521b6118b9565b6001600160a01b03821683600401528b83602401526020600060448560006000805160206156d28339815191525af161302657613026605874051d1c985b9cd9995c8815d155120819985a5b195960421b6118b9565b508a9450602084015b838110156130855780356130796001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612d72565b9650915060200161302f565b5060009350600160fe1b811680156131d357600094506130d23063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612d72565b9550672e1a7d4da9059cbb60c01b835273f4858d71e5d7d27e3f7270390cd57545dca35aa960088401528560288401526020600060448560040160006000805160206156d28339815191525af161314657613146605874051d1c985b9cd9995c8815d155120819985a5b195960421b6118b9565b85600484015260206000602485600073f4858d71e5d7d27e3f7270390cd57545dca35aa95af16131985761319860577c13776974686472617720455448206661696c65640000000000000000006118b9565b600080600080898b5af16131ce576131ce60577c137472616e7366657220455448206661696c65640000000000000000006118b9565b613411565b60009350600160ff1b8216801561328557600160fc1b831615613280576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa61323957613239605672049d1bdad95b8c0818d85b1b0819985a5b195960521b6118b9565b600051955087846004015260206000602486895afa61327a5761327a60567c15746f6b656e302062616c616e6365206661696c6564000000000000006118b9565b60005194505b613321565b600160fd1b831615613321576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa6132da576132da605672049d1bdad95b8c4818d85b1b0819985a5b195960521b6118b9565b600051955087846004015260206000602486895afa61331b5761331b60597c15746f6b656e312062616c616e6365206661696c6564000000000000006118b9565b60005194505b506133598763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612d72565b955084600010600181146133c257600160ff1b8316801561339a576133936770a082310dfe168160c01b6001600160a01b03861687612c5f565b96506133bc565b6133b96770a08231d21220a760c01b6001600160a01b03861687612c5f565b96505b5061340f565b6770a082310dfe168160c01b845287846004015260206000602486895afa613407576134076058740519d95d0818985b185b98d953d98819985a5b195960421b6118b9565b846000510396505b505b50508884101561344357613443605a7c164d696e2072657475726e206e6f7420726561636865640000000000006118b9565b8a81528260208201523260408201528960608201528360808201526000805160206156f283398151915260a082a1505050979650505050505050565b60006138a3565b6000856001600160ff1b0310156134a857630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461353c57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806135305760206000fd5b5060206000803e61359f565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806135975760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156135c5576322323ba760e21b60005260046000fd5b1960010195945050505050565b6001813410036135ed57631841b4e160e01b60005260046000fd5b600080600080846000805160206156d28339815191525af1806116c1576116c160577c1357455448206465706f736974206661696c65640000000000000000006118b9565b60405160048101672e1a7d4da9059cbb60c01b825273f4858d71e5d7d27e3f7270390cd57545dca35aa9600482015283602482015260008060448360006000805160206156d28339815191525af19050806136af576136af60587c147472616e736665722077657468206661696c656400000000000000006118b9565b836004830152600080602484600073f4858d71e5d7d27e3f7270390cd57545dca35aa95af19050806137035761370360587c1477697468647261772077657468206661696c656400000000000000006118b9565b60008060008087875af190508061373457613734605571045cd95b9908195d1a195c8819985a5b1959605a1b6118b9565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080613789576137896055710459d95d081d1bdad95b8c0819985a5b1959605a1b6118b9565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080613789576137896054710459d95d081d1bdad95b8c4819985a5b1959605a1b6118b9565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8034613835578235600160ff1b811615600181146138265761381f82613798565b9350613832565b61382f8261373a565b93505b50505b8335600160fd1b16613872578335600160ff1b811615600181146138635761385c8261373a565b925061386f565b61386c82613798565b92505b50505b604051826000528160205232604052856080526000805160206156f283398151915260a06000a16040525050505050565b82601f196020840282010183806138c5576333f3e07b60e11b60005260046000fd5b50886000341180156138de576138da896135d2565b309a505b5087606052825b82811015613908576138fb898235848e30613486565b309b5098506020016138e5565b506000600160fd1b83351611806001811461392857801561394757613958565b6139368a8535858f30613486565b9550613942868c613632565b613958565b6139558a8535858f8f613486565b95505b5050508583101561398b5761398b605a7c164d696e2072657475726e206e6f7420726561636865640000000000006118b9565b6139968382846137e9565b50509695505050505050565b60006139ad83613a36565b156139c357506001600160a01b03811631613a30565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2d9190615322565b90505b92915050565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b6000613a8882600081518110613a7057613a7061533b565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b81811015613bc3578015613ad457613ab9868281518110613a7057613a7061533b565b9450613ace6001600160a01b038616306139a2565b9650309a505b30613ae060018461541e565b82148015613aec575088155b15613af8575088613b90565b613b0360018461541e565b82108015613b39575086613b1883600161544e565b81518110613b2857613b2861533b565b602002602001015160200151516001145b15613b8b5786613b4a83600161544e565b81518110613b5a57613b5a61533b565b602002602001015160200151600081518110613b7857613b7861533b565b6020026020010151905060019450613b90565b600094505b613bb78c8c838b8b8781518110613ba957613ba961533b565b602002602001015189614052565b50839250600101613a96565b5050505050505050505050565b613be2826001600160a01b0316613a36565b15613e0a576040516370a0823160e01b81523060048201526000906000805160206156d2833981519152906370a0823190602401602060405180830381865afa158015613c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c579190615322565b90508015613d505760405163a9059cbb60e01b815273f4858d71e5d7d27e3f7270390cd57545dca35aa96004820152602481018290526000805160206156d28339815191529063a9059cbb906044016020604051808303816000875af1158015613cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce9919061554f565b50604051632e1a7d4d60e01b81526004810182905273f4858d71e5d7d27e3f7270390cd57545dca35aa990632e1a7d4d90602401600060405180830381600087803b158015613d3757600080fd5b505af1158015613d4b573d6000803e3d6000fd5b505050505b6001600160a01b038216301461168b57478015613734576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613db4576040519150601f19603f3d011682016040523d82523d6000602084013e613db9565b606091505b5050905080612b775760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b6001600160a01b03811630146116c1576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e859190615322565b9050801561168b5761168b838383611d32565b600054610100900460ff16613ebf5760405162461bcd60e51b815260040161022390615461565b610ece33612968565b600054610100900460ff1661221a5760405162461bcd60e51b815260040161022390615461565b606060048351106140205760208301516001600160e01b0319811662461bcd60e51b148015613f2057506044845110155b15613fc057602484810151808601820180519192909190613f4290849061544e565b613f4c919061544e565b86511015613f945760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610223565b8481604051602001613fa792919061556c565b6040516020818303038152906040529350505050613a30565b6001600160e01b03198116634e487b7160e01b148015613fe1575083516024145b1561401e57602484015183613ff582614209565b6040516020016140069291906155bb565b60405160208183030381529060405292505050613a30565b505b8161402a84614231565b60405160200161403b9291906155f0565b604051602081830303815290604052905092915050565b6000805b8351518110156141ff576000846040015182815181106140785761407861533b565b602002602001015160001b905060008060008061409f89608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506140cb828861544e565b8951519097506140dd9060019061541e565b8603614144576127108711156141445760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610223565b8761419f576000826127101461417057612710614161848d615367565b61416b919061537e565b614172565b8a5b905061419d8e8b60200151898151811061418e5761418e61533b565b60200260200101518484614418565b505b50506141e981886000015186815181106141bb576141bb61533b565b60200260200101518b858b6060015189815181106141db576141db61533b565b60200260200101518f6144b8565b50505080806141f790615641565b915050614056565b5050505050505050565b6060613a308260405160200161422191815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090614259906002615367565b61426490600261544e565b6001600160401b0381111561427b5761427b614999565b6040519080825280601f01601f1916602001820160405280156142a5576020820181803683370190505b509050600360fc1b816000815181106142c0576142c061533b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106142ef576142ef61533b565b60200101906001600160f81b031916908160001a90535060005b8451811015614410578260048683815181106143275761432761533b565b01602001516001600160f81b031916901c60f81c6010811061434b5761434b61533b565b1a60f81b8261435b836002615367565b61436690600261544e565b815181106143765761437661533b565b60200101906001600160f81b031916908160001a905350828582815181106143a0576143a061533b565b60209101015160f81c600f16601081106143bc576143bc61533b565b1a60f81b826143cc836002615367565b6143d790600361544e565b815181106143e7576143e761533b565b60200101906001600160f81b031916908160001a9053508061440881615641565b915050614309565b509392505050565b306001600160a01b0385160361443857614433828483611d32565b613734565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9990630a5ea46690608401600060405180830381600087803b1580156144a457600080fd5b505af11580156141ff573d6000803e3d6000fd5b85156145d057600080866001600160a01b0316636f7929f260e01b8787876040516024016144e89392919061565a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526145366001600160a01b038616650f2882bf0b3360d21b61544e565b60405160200161454792919061568f565b60408051601f1981840301815290829052614561916154f4565b6000604051808303816000865af19150503d806000811461459e576040519150601f19603f3d011682016040523d82523d6000602084013e6145a3565b606091505b50915091508181906145c85760405162461bcd60e51b8152600401610223919061553c565b5050506146da565b600080866001600160a01b03166330e6ae3160e01b8787876040516024016145fa9392919061565a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526146486001600160a01b038616650f2882bf0b3360d21b61544e565b60405160200161465992919061568f565b60408051601f1981840301815290829052614673916154f4565b6000604051808303816000865af19150503d80600081146146b0576040519150601f19603f3d011682016040523d82523d6000602084013e6146b5565b606091505b50915091508181906118685760405162461bcd60e51b8152600401610223919061553c565b505050505050565b600080604083850312156146f557600080fd5b50508035926020909101359150565b6001600160a01b038116811461108257600080fd5b803561472481614704565b919050565b600060a0828403121561473b57600080fd5b50919050565b60008083601f84011261475357600080fd5b5081356001600160401b0381111561476a57600080fd5b6020830191508360208260051b850101111561478557600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156147ab57600080fd5b8935985060208a01356147bd81614704565b97506147cc8b60408c01614729565b965060e08a01356001600160401b03808211156147e857600080fd5b6147f48d838e01614741565b90985096506101008c013591508082111561480e57600080fd5b61481a8d838e01614741565b90965094506101208c013591508082111561483457600080fd5b506148418c828d01614741565b915080935050809150509295985092959850929598565b60008060008060008060a0878903121561487157600080fd5b863595506020870135945060408701359350606087013561489181614704565b925060808701356001600160401b038111156148ac57600080fd5b6148b889828a01614741565b979a9699509497509295939492505050565b6000806000806000608086880312156148e257600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561490d57600080fd5b61491988828901614741565b969995985093965092949392505050565b60006020828403121561493c57600080fd5b81356120ff81614704565b801515811461108257600080fd5b803561472481614947565b6000806040838503121561497357600080fd5b823561497e81614704565b9150602083013561498e81614947565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156149d1576149d1614999565b60405290565b60405161014081016001600160401b03811182821017156149d1576149d1614999565b604051601f8201601f191681016001600160401b0381118282101715614a2257614a22614999565b604052919050565b600060a08284031215614a3c57600080fd5b614a446149af565b9050813581526020820135614a5881614704565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b03821115614a9c57614a9c614999565b5060051b60200190565b600082601f830112614ab757600080fd5b81356020614acc614ac783614a83565b6149fa565b82815260059290921b84018101918181019086841115614aeb57600080fd5b8286015b84811015610eb15780358352918301918301614aef565b600082601f830112614b1757600080fd5b81356020614b27614ac783614a83565b82815260059290921b84018101918181019086841115614b4657600080fd5b8286015b84811015610eb1578035614b5d81614704565b8352918301918301614b4a565b600082601f830112614b7b57600080fd5b81356001600160401b03811115614b9457614b94614999565b614ba7601f8201601f19166020016149fa565b818152846020838601011115614bbc57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614bea57600080fd5b81356020614bfa614ac783614a83565b82815260059290921b84018101918181019086841115614c1957600080fd5b8286015b84811015610eb15780356001600160401b03811115614c3c5760008081fd5b614c4a8986838b0101614b6a565b845250918301918301614c1d565b6000614c66614ac784614a83565b838152905060208101600584901b8301851015614c8257600080fd5b825b8460051b8401811015614df2576001600160401b038082351115614ca757600080fd5b8135850187601f820112614cba57600080fd5b614cc7614ac78235614a83565b81358082526020808301929160051b8401018a811115614ce657600080fd5b602084015b81811015614ddb578581351115614d0157600080fd5b8035850160a0818e03601f19011215614d1957600080fd5b614d216149af565b8760208301351115614d3257600080fd5b614d448e602080850135850101614b06565b81528760408301351115614d5757600080fd5b614d6a8e60206040850135850101614b06565b60208201528760608301351115614d8057600080fd5b614d938e60206060850135850101614aa6565b60408201528760808301351115614da957600080fd5b614dbc8e60206080850135850101614bd9565b606082015260a091909101356080820152845260209384019301614ceb565b505085525050602092830192919091019050614c84565b50509392505050565b600082601f830112614e0c57600080fd5b6120ff83833560208501614c58565b600082601f830112614e2c57600080fd5b81356020614e3c614ac783614a83565b82815260059290921b84018101918181019086841115614e5b57600080fd5b8286015b84811015610eb15780356001600160401b0380821115614e7f5760008081fd5b90880190610140828b03601f1901811315614e9a5760008081fd5b614ea26149d7565b8784013581526040614eb5818601614719565b898301526060614ec6818701614719565b8284015260809150614ed9828701614719565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120614f1b818701614955565b83830152928501359284841115614f3457600091508182fd5b614f428e8b86890101614b6a565b90830152508652505050918301918301614e5f565b6000806000806000806101408789031215614f7157600080fd5b614f7b8888614a2a565b955060a08701356001600160401b0380821115614f9757600080fd5b614fa38a838b01614aa6565b965060c0890135915080821115614fb957600080fd5b614fc58a838b01614dfb565b955060e0890135915080821115614fdb57600080fd5b50614fe889828a01614e1b565b935050610100870135614ffa81614704565b915061012087013561500b81614704565b809150509295509295509295565b600080600080600080600080610120898b03121561503657600080fd5b883597506150478a60208b01614729565b965060c08901356001600160401b038082111561506357600080fd5b61506f8c838d01614741565b909850965060e08b013591508082111561508857600080fd5b6150948c838d01614741565b90965094506101008b01359150808211156150ae57600080fd5b506150bb8b828c01614741565b999c989b5096995094979396929594505050565b600080600080600061012086880312156150e857600080fd5b6150f28787614a2a565b945060a08601356001600160401b038082111561510e57600080fd5b61511a89838a01614aa6565b955060c088013591508082111561513057600080fd5b61513c89838a01614dfb565b945060e088013591508082111561515257600080fd5b5061515f88828901614e1b565b92505061010086013561517181614704565b809150509295509295909350565b60006020828403121561519157600080fd5b5035919050565b60008083601f8401126151aa57600080fd5b5081356001600160401b038111156151c157600080fd5b60208301915083602082850101111561478557600080fd5b60008060008060008060008060c0898b0312156151f557600080fd5b88359750602089013561520781614704565b9650604089013595506060890135945060808901356001600160401b038082111561523157600080fd5b61523d8c838d01614741565b909650945060a08b013591508082111561525657600080fd5b506150bb8b828c01615198565b6000806000806060858703121561527957600080fd5b843593506020850135925060408501356001600160401b0381111561529d57600080fd5b6152a987828801615198565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a082840312156152ef57600080fd5b6120ff8383614a2a565b60006120ff368484614c58565b6020808252600290820152616e6160f01b604082015260600190565b60006020828403121561533457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417613a3057613a30615351565b60008261539b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b600080604083850312156153da57600080fd5b82516153e581614704565b602084015190925061498e81614704565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b81810381811115613a3057613a30615351565b60006020828403121561544357600080fd5b81516120ff81614704565b80820180821115613a3057613a30615351565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160e01b031984168152818360048301376000910160040190815292915050565b60005b838110156154eb5781810151838201526020016154d3565b50506000910152565b600082516155068184602087016154d0565b9190910192915050565b600081518084526155288160208601602086016154d0565b601f01601f19169290920160200192915050565b6020815260006120ff6020830184615510565b60006020828403121561556157600080fd5b81516120ff81614947565b6000835161557e8184602088016154d0565b6508ae4e4dee4560d31b90830190815283516155a18160068401602088016154d0565b602960f81b60069290910191820152600701949350505050565b600083516155cd8184602088016154d0565b650a0c2dcd2c6560d31b90830190815283516155a18160068401602088016154d0565b600083516156028184602088016154d0565b670aadcd6dcdeeedc560c31b90830190815283516156278160088401602088016154d0565b602960f81b60089290910191820152600901949350505050565b60006001820161565357615653615351565b5060010190565b6001600160a01b0384811682528316602082015260606040820181905260009061568690830184615510565b95945050505050565b600083516156a18184602088016154d0565b919091019182525060200191905056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212208fe306bcd1dde719294e18b379a8e7c7d1fd6c1bfe484836cc9fc0cfd7586a0e64736f6c63430008110033