0 txs
0 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)
version
viewfunction version() view returns (string)
dagSwapByOrderId
payablefunction dagSwapByOrderId(uint256 orderId, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
dagSwapTo
payablefunction dagSwapTo(uint256 orderId, address receiver, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
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[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) 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
CommissionAndTrimInfo
event CommissionAndTrimInfo(uint256 toBCommission, uint256 toBTrim, uint256 trimRate, uint256 chargeRate)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50615eeb80620000216000396000f3fe6080604052600436106100dd5760003560e01c806301617fab1461013457806303b87e5f1461014757806308298b5a1461016d5780630c307f76146101805780630d5f0e3b1461019357806344014e98146101a657806354fd4d50146101b9578063591b3d08146102095780636aa476451461021c57806373679b6b146102515780639871efa41461027357806398d2ac6214610286578063b80c2f0914610299578063b8815477146102ac578063e0af3616146102bf578063e99bfa95146102da578063f2c42696146102ed578063fa461e331461030057600080fd5b3661012f5732330361012d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61012d610142366004614e60565b610320565b61015a610155366004614f0a565b610343565b6040519081526020015b60405180910390f35b61015a61017b366004614fd6565b6103f4565b61015a61018e366004615048565b6104ea565b61015a6101a13660046150ba565b61070c565b61015a6101b4366004615048565b610767565b3480156101c557600080fd5b506101fc604051806040016040528060178152602001763b189718171b96b6bab63a3496b1b7b6b6b4b9b9b4b7b760491b81525081565b604051610164919061514d565b61015a610217366004615740565b610885565b34801561022857600080fd5b50610244732949a7b2771cc70ecd400871236d345979e1c5e781565b6040516101649190615802565b34801561025d57600080fd5b50610244600080516020615e5683398151915281565b61015a6102813660046150ba565b610b83565b61012d610294366004615816565b610b9d565b61015a6102a7366004615855565b610cd4565b61015a6102ba366004615048565b610d31565b3480156102cb57600080fd5b506102446006602160991b0181565b61015a6102e836600461590b565b610ef7565b61015a6102fb3660046159bb565b610f07565b34801561030c57600080fd5b5061012d61031b366004615a15565b610f21565b600160ff1b81166001600160801b03821661033d8433848461116b565b50505050565b600087608001354281101561036a5760405162461bcd60e51b815260040161012490615a94565b6040518b8152600080516020615e968339815191529060200160405180910390a16103e533808c6103a0368e90038e018e615abc565b8c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103e092508d91508e9050615ad8565b6114fe565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615e968339815191529060200160405180910390a160008061042d600034118686611652565b91509150600061043c8a611920565b9050826001600160a01b0316816001600160a01b0316148061048657506001600160a01b03811615801561048657506001600160a01b038316600080516020615e36833981519152145b6104cc5760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610124565b6104dc83838b8b338c8c8c61192c565b9a9950505050505050505050565b60008360800135428110156105115760405162461bcd60e51b815260040161012490615a94565b826105525760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610124565b604051878152600080516020615e968339815191529060200160405180910390a16001600160a01b03861615610588578561058a565b335b95506000806105976119f4565b915091506000600760f91b878760008181106105b5576105b5615ae5565b90506020028101906105c79190615afb565b608001351690506105f2836105dc8a35611920565b6105ec60408c0160208d01615b1b565b84611f50565b61060b61060560408a0160208b01615b1b565b8a612046565b945060008061063885338d8d6040013588600001518f60200160208101906106339190615b1b565b6120c6565b9150915061064a8a8a8a333387612110565b610669858c838d60200160208101906106639190615b1b565b886122bd565b508661068461067e60408d0160208e01615b1b565b8d612046565b61068e9190615b4e565b965089606001358710156106b45760405162461bcd60e51b815260040161012490615b67565b600080516020615e768339815191526106cd8b35611920565b6106dd60408d0160208e01615b1b565b328d604001358b6040516106f5959493929190615b97565b60405180910390a150505050505095945050505050565b60405160a086901c8152600090600080516020615e968339815191529060200160405180910390a1600080610745600034118686612829565b91509150610759338984848b8b8b8b612aed565b925050505b95945050505050565b600083608001354281101561078e5760405162461bcd60e51b815260040161012490615a94565b604051878152600080516020615e968339815191529060200160405180910390a16000806107c0600034118787612829565b90925090506001600160a01b0382166107d98835611920565b6001600160a01b031614801561080f57506001600160a01b0381166108046040890160208a01615b1b565b6001600160a01b0316145b6108575760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b61087833896001600160a01b031684848b604001358c606001358c8c612aed565b9998505050505050505050565b60008660800151428110156108ac5760405162461bcd60e51b815260040161012490615a94565b60006108bb8960000151611920565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016109215760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610124565b6001600160a01b0384166109705760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610124565b6001600160a01b0385166109b95760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610124565b6000896040015111610a045760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610124565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a33903090600401615802565b602060405180830381865afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190615bcb565b905060005b8951811015610adb578a60400151828b8381518110610a9a57610a9a615ae5565b6020026020010151610aac9190615be4565b610ab69190615bfb565b8a8281518110610ac857610ac8615ae5565b6020908102919091010152600101610a79565b5060408a0181905260208a0151610af29087612046565b9350610b028a8a8a30898b612bbd565b83610b118b6020015188612046565b610b1b9190615b4e565b93508960600151841015610b415760405162461bcd60e51b815260040161012490615b67565b600080516020615e76833981519152828b60200151328d6040015188604051610b6e959493929190615b97565b60405180910390a15050509695505050505050565b6000610b938686863387876103f4565b9695505050505050565b806080013542811015610bc25760405162461bcd60e51b815260040161012490615a94565b600080610bcf8435611920565b90506001600160a01b038116600080516020615e36833981519152148015610c1557506006602160991b01610c0a6040860160208701615b1b565b6001600160a01b0316145b15610c235760009150610cbc565b6001600160a01b0381166006602160991b01148015610c675750600080516020615e36833981519152610c5c6040860160208701615b1b565b6001600160a01b0316145b15610c755760019150610cbc565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610124565b610ccc868684876040013561116b565b505050505050565b6000876080013542811015610cfb5760405162461bcd60e51b815260040161012490615a94565b6040518a8152600080516020615e968339815191529060200160405180910390a16104dc3380806103a0368e90038e018e615abc565b6000836080013542811015610d585760405162461bcd60e51b815260040161012490615a94565b604051878152600080516020615e968339815191529060200160405180910390a1600080610d8a600034118787611652565b90925090506000610d9b8835611920565b9050826001600160a01b0316816001600160a01b03161480610de557506001600160a01b038116158015610de557506001600160a01b038316600080516020615e36833981519152145b610e2f5760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610124565b6001600160a01b038216610e4960408a0160208b01615b1b565b6001600160a01b03161480610e9757506000610e6b60408a0160208b01615b1b565b6001600160a01b0316148015610e9757506001600160a01b038216600080516020615e36833981519152145b610edf5760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b6104dc83838a604001358b60600135338e8d8d61192c565b6000610b93868686868687610885565b6000610f1685338686866104ea565b90505b949350505050565b610fc2565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610f5d57610f5d610f26565b6000518015610f885760a435600483015260248201819052610f886020600060448582885af1610f8d565b505050565b80610f9a57610f9a610f26565b600160005114601f3d11163d151780610fbe57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610ff957610ff9610f26565b6020806004808501335afa61101057611010610f26565b60206040600460088501335afa61102957611029610f26565b600080600088136001811461104557602051925087915061104e565b60005192508891505b50600173cced75703e87967682319712fd9296b9de09020360581b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146110c157635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146111335782601486015283603486015233605486015281607486015261112e602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1610f8d565b611160565b336010860152816030860152611156602060006044600c89016000885af1610f8d565b6111608386610f30565b505050505050505050565b604051848152600080516020615e968339815191529060200160405180910390a1600081116111d15760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610124565b6001600160a01b038316156111e657826111e8565b335b92506000806111f56119f4565b9150915060008461121457600080516020615e3683398151915261121d565b6006602160991b015b9050600085611233576006602160991b01611243565b600080516020615e368339815191525b90506112528483836000611f50565b60008061126786338b8a8960000151886120c6565b9150915087156113de5760405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea466906112c3906006602160991b01903390600080516020615e56833981519152908d90600401615c1d565b600060405180830381600087803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b8152600481018a9052600080516020615e568339815191529250632e1a7d4d9150602401600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050506001600160a01b03821630146113d9576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146113b1576040519150601f19603f3d011682016040523d82523d6000602084013e6113b6565b606091505b50509050806113d75760405162461bcd60e51b815260040161012490615c47565b505b6114aa565b855161142c5786341461142c5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610124565b6006602160991b016001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b505050506001600160a01b038316301490506114aa576114aa6006602160991b018389612f49565b60006114b9878b84878a6122bd565b9050600080516020615e768339815191528585328b6114d88682615b4e565b6040516114e9959493929190615b97565b60405180910390a15050505050505050505050565b60006001600160a01b038516156115155784611517565b335b94506000806115246119f4565b915091506000600760f91b8560008151811061154257611542615ae5565b602002602001015160008151811061155c5761155c615ae5565b6020026020010151608001511690506115878361157c8960000151611920565b896020015184611f50565b611595876020015189612046565b93506000806115b4858d8c8c6040015188600001518e602001516120c6565b915091506115c68989898f8f87612bbd565b6115d7858b838c60200151886122bd565b505050836115e988602001518a612046565b6115f39190615b4e565b935086606001518410156116195760405162461bcd60e51b815260040161012490615b67565b600080516020615e768339815191526116358860000151611920565b8860200151328a6040015188604051610b6e959493929190615b97565b600080826116725760405162461bcd60e51b815260040161012490615c7d565b60006001600160a01b038585600081811061168f5761168f615ae5565b9050602002013560001c1690506000600160ff1b868660008181106116b6576116b6615ae5565b9050602002013560001c166000141590508061173357816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172e9190615cb3565b611795565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117959190615cb3565b93506001600160a01b0384166006602160991b011480156117b35750865b156117ca57600080516020615e3683398151915293505b600086866117d9600182615b4e565b8181106117e8576117e8615ae5565b60200291909101359150506001600160a01b038116600160ff1b821615158061187257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186d9190615cb3565b6118d4565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190615cb3565b9550600160fe1b831615156001600160a01b0387166006602160991b011480156118fb5750805b1561191257600080516020615e3683398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b038416156119435783611945565b335b93506000806119526119f4565b91509150611963828c8c6000611f50565b61196d8a87612046565b925061198187878d8d8d8d8b8b8a8a612f79565b8261198c8b88612046565b6119969190615b4e565b9250878310156119b85760405162461bcd60e51b815260040161012490615b67565b600080516020615e768339815191528b8b328c876040516119dd959493929190615b97565b60405180910390a150505b98975050505050505050565b604080516102a081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c080870186905260e0808801879052610100880187905261012088018790526101408801879052610160880187905261018088018790526101a088018790526101c088018790526101e088018790526102008801879052610220880187905261024088018790526102608801879052610280880187905288519081018952868152948501869052968401859052918301849052820183905281018290529283015290611aee565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60203603356001600160d01b031981166000653ca20afc2bbb60d01b8214651e51057e155560d11b83141715611b22575060015b6522220afc2bbb60d01b8214651111057e155560d11b83141715611b44575060025b6588880afc2bbb60d01b8214654444057e155560d11b83141715611b66575060035b654444057e155560d11b8214651111057e155560d11b8314651e51057e155560d11b8414171785526588880afc2bbb60d01b82146522220afc2bbb60d01b8314653ca20afc2bbb60d01b8414171785602001526000811160018114611bed57601360005b81811015611be657600060208202890160400152600101611bca565b5050611c8d565b65ffffffffffff60a01b841660a01c8660a001526001600160a01b0384168660c001526040360335935060016000600160ff1b86161115611c2c575060025b60608701526001600160a01b03841660408701526002821115611c865760ff60f01b841660f01c915060088211600383101715611c8657611c8660587414696e76616c6964207265666572726572206e756d60401b611ad2565b8186608001525b506001811115611d445760015b6008811015611d425781811060018114611cc657600060408302880160a0810182905260c00152611d39565b6020820260400136033594506001600160d01b03198516808514611d0a57611d0a605b7717696e76616c696420636f6d6d697373696f6e20666c616760281b611ad2565b5065ffffffffffff60a01b851660a01c604083028860a00101526001600160a01b038516604083028860c00101525b50600101611c9a565b505b600092508015611d58576020600182010292505b50602082013603356001600160d01b031981169150653bbbbbbb911160d11b82146577777777111160d01b8314178085526001811460018114611db65760008660200152600086604001526000866060015260008660800152611e3c565b65ffffffffffff60a01b831660a01c86602001526001600160a01b03831686604001526040850136033592506001600160d01b03198316808514611e1457611e1460557111696e76616c6964207472696d20666c616760581b611ad2565b506001600160cf1b841615611e27575060025b60608701526001600160a01b03831660808701525b5050653bbbbbbb911160d11b821460018114611e655760008560a0015260008560c00152611ec5565b6060840136033591506001600160d01b03198216808414611ea057611ea060557111696e76616c6964207472696d20666c616760581b611ad2565b5065ffffffffffff60a01b821660a01c8560a001526001600160a01b0382168560c001525b50505050816000015180611eda575081602001515b80611ee3575080515b15611f4c577f7970b0744fdb6cf0b120e5e0a5f4da3ab8cbec6d5d9ec8a4f327ccc1d8a5eb8b8260600151826060015183602001518460a00151604051611f43949392919093845260208401929092526040830152606082015260800190565b60405180910390a15b9091565b8351600160fb1b82161515600160fa1b8316151517600160f91b83161515179080821615611fa057611fa0605f7c1b46726f6d20636f6d6d697373696f6e206e6f7420737570706f727400611ad2565b838503611fc457611fc460526e0e496e76616c696420746f6b656e7360701b611ad2565b602086015181811615611ff957611ff960607c1c496e76616c696420636f6d6d697373696f6e20646972656374696f6e611ad2565b6040870151868114831690861482161790159115919091161790508061203f5761203f605b7717496e76616c696420636f6d6d697373696f6e20696e666f60281b611ad2565b5050505050565b6000600080516020615e368339815191528314600181146120ba57604051602481016040526370a0823160e01b815283600482015260206000602483885afa9050806120af576120af6058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b5060005191506120bf565b823191505b5092915050565b6000808760200151806120d65750835b156120ef573091506120e88330612046565b90506120f3565b8591505b87511561210557612105888887612fc1565b965096945050505050565b600061212136889003880188615abc565b905060006121328260000151611920565b905060006121678888600081811061214c5761214c615ae5565b905060200281019061215e9190615afb565b60800135611920565b905061217b826001600160a01b0316613406565b15612216576001600160a01b0381166006602160991b01146121af5760405162461bcd60e51b815260040161012490615cd0565b6006602160991b016001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b5050505050309550612287565b816001600160a01b0316816001600160a01b0316146122475760405162461bcd60e51b815260040161012490615cd0565b34156122875760405162461bcd60e51b815260206004820152600f60248201526e076616c7565206d757374206265203608c1b6044820152606401610124565b6122af86858786604001516122a888602001516001600160a01b0316613406565b8d8d613422565b6111608360200151856134a5565b600085602001511580156122d057508151155b156122dd5750600061075e565b60006122e98430612046565b9050612760565b8082028115828204841417840261230f5763ad251c276000526004601cfd5b9290920492915050565b500390565b8115610fbe5760008060008085855af180610f8857610f88605571045cd95b9908195d1a195c8819985a5b1959605a1b611ad2565b8215610f88576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156123a25750803b153d17155b8061033d5761033d605975055d1c985b9cd9995c881d1bdad95b8819985a5b1959603a1b611ad2565b604051606081016040528181528260208201528360408201528460608201527f3cfb523a4c38d88561dd3bf04805a31715c8b5fc468a03b8d684356f360dea99608082a15050505050565b604051606081016040528181528260208201528360408201527f7bec7d55a62a7a7b8068f1533e2a3bbf727b3e2e57f30c576fe159da60e09a65606082a150505050565b604051606081016040528181528260208201528360408201527ffd08115c8e43d2a49d95ee18d7f69b8bbac60bd368c73cf22d30664a22a0626d606082a150505050565b600060808201516000805b828110156124c85760408102850160a0015191909101906001016124a9565b506301c9c3808111156124f9576124f9605975156572726f7220636f6d6d697373696f6e207261746560381b611ad2565b5060009150600080516020615e368339815191528414600181146125785760005b828110156125725760408102850160a00151801561256957612541633b9aca00828a6122f0565b6040830260c00187015161255682828b612353565b6125628382848c6123cb565b5094909401935b5060010161251a565b506125e2565b60005b828110156125e05760408102850160a0015180156125d7576125a2633b9aca00828a6122f0565b6040830260c0018701516125b6828261231e565b6125d0838284600080516020615e368339815191526123cb565b5094909401935b5060010161257b565b505b50509392505050565b6000602082015160a0830151606482111561261e5761261e60536f0f6572726f72207472696d207261746560681b611ad2565b6103e881111561264857612648605571116572726f7220636861726765207261746560581b611ad2565b60808401518603925061265e6103e883886122f0565b91508183111561266c578192505b6126796103e882856122f0565b9150818303600080516020615e368339815191528614600181146126a257801561270b57612755565b826103e811156126d65760408601516126bb838261231e565b6126d48184600080516020615e36833981519152612416565b505b82156127065760c08601516126eb858261231e565b6127048186600080516020615e3683398151915261245a565b505b612755565b826103e8111561273257604086015161272583828a612353565b61273081848a612416565b505b82156127555760c086015161274885828a612353565b61275381868a61245a565b505b505050509392505050565b8085111561278c5761278c6059750ab4b73b30b634b2103130b630b731b29030b33a32b960391b611ad2565b60208701518582039080156127ae576127a682878b61249e565b935090839003905b508351608085015181151581841116156127d6576127cd8388886125eb565b94850194909203915b5050600080516020615e3683398151915285146001811461280a57612805826001600160a01b038a1688612353565b61281d565b61281d826001600160a01b038a1661231e565b50505095945050505050565b600080826128495760405162461bcd60e51b815260040161012490615c7d565b60006001600160a01b038585600081811061286657612866615ae5565b905060200201351690506000600160ff1b8686600081811061288a5761288a615ae5565b905060200201351660001490508061290357816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fe9190615cb3565b612965565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129659190615cb3565b93506001600160a01b0384166006602160991b011480156129835750865b1561299a57600080516020615e3683398151915293505b600086866129a9600182615b4e565b8181106129b8576129b8615ae5565b60200291909101359150506001600160a01b038116600160ff1b82161580612a4157816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3c9190615cb3565b612aa3565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa39190615cb3565b9550600160fd1b831615156001600160a01b0387166006602160991b011480156118fb5750801561191257600080516020615e368339815191529650505050505050935093915050565b6000806001600160a01b03891615612b0d57612b0889611920565b612b0f565b335b9050600080612b1c6119f4565b91509150612b2d828b8b6000611f50565b612b378984612046565b9350612b4a8c848a8a8d8b8b898961372d565b83612b558a85612046565b612b5f9190615b4e565b935086841015612b815760405162461bcd60e51b815260040161012490615b67565b600080516020615e768339815191528a8a328b88604051612ba6959493929190615b97565b60405180910390a150505098975050505050505050565b85518690600090612bcd90611920565b9050612bd881613406565b15612cbc576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50505050506006602160991b016001600160a01b0316612c8e87600081518110612c6357612c63615ae5565b6020026020010151600081518110612c7d57612c7d615ae5565b602002602001015160800151611920565b6001600160a01b031614612cb45760405162461bcd60e51b815260040161012490615cd0565b309450612d02565b806001600160a01b0316612cdc87600081518110612c6357612c63615ae5565b6001600160a01b031614612d025760405162461bcd60e51b815260040161012490615cd0565b6000805b8851811015612d3e57888181518110612d2157612d21615ae5565b602002602001015182612d349190615cfd565b9150600101612d06565b508260400151811115612db15760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610124565b508551875114612df55760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610124565b60005b8651811015612f30578015612ed35786600081518110612e1a57612e1a615ae5565b6020026020010151600081518110612e3457612e34615ae5565b602002602001015160800151878281518110612e5257612e52615ae5565b6020026020010151600081518110612e6c57612e6c615ae5565b60200260200101516080015114612ed35760405162461bcd60e51b815260206004820152602560248201527f496e636f6e73697374656e742066726f6d546f6b656e206163726f7373206261604482015264746368657360d81b6064820152608401610124565b612f28868686612eef87602001516001600160a01b0316613406565b8c8681518110612f0157612f01615ae5565b60200260200101518c8781518110612f1b57612f1b615ae5565b6020026020010151613770565b600101612df8565b50612f3f8260200151846134a5565b5050505050505050565b612f5c8363a9059cbb60e01b84846138c7565b610f885760405163fb7f507960e01b815260040160405180910390fd5b600080612f8e848d8d8b87600001518e6120c6565b90925090508b612fa38b8a8a8a8a868961391a565b50612fb1858d848d886122bd565b5050505050505050505050505050565b613279565b600082821015612319576346e72d036000526004601cfd5b8115610fbe5760008060008085855af180610f8857610f88605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611ad2565b831561033d576040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af190508061203f5761203f60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611ad2565b8215610f88576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156130e45750803b153d17155b8061033d5761033d605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611ad2565b604051604881016040526370a0823160e01b815230600482015260206000602483855afa90508061315f5761315f6058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b506000516000805b858110156132255760408102870160a00151801561321c576000600188038314600181146131ea576131b4670de0b6b3a7640000876131af8b670de0b6b3a7640000886122f0565b6122f0565b9150858211156131e1576131e1605874051a5b9d985b1a5908185b5bdd5b9d14d8d85b195960421b611ad2565b938101936131f7565b6131f48587612fc6565b91505b506040830260c00189015161320d828289613095565b6132198382848a61322e565b50505b50600101613167565b50505050505050565b604051606081016040528181528260208201528360408201528460608201527fcd5eae9d9d0b96532bd1b7dbf6628ce436b2af735829087a03c548439f8bf850608082a15050505050565b604083015160608401516000608086015160005b818110156132ac5760408102880160a00151929092019160010161328d565b506301c9c3808211156132dd576132dd605975156572726f7220636f6d6d697373696f6e207261746560381b611ad2565b600080516020615e3683398151915284036133545760005b818110156133525760408102880160a001518015613349576040820260c00189015184633b9aca00038289020461332c8183612fde565b613346838383600080516020615e3683398151915261322e565b50505b506001016132f5565b505b60018314600080516020615e3683398151915285141516156133c65760005b818110156133c45760408102880160a0015180156133bb576040820260c00189015184633b9aca0003828902046133ac81838c8b61301b565b6133b88383838b61322e565b50505b50600101613373565b505b60028314600080516020615e3683398151915285141516156132255781633b9aca0003828602046133f98130898861301b565b5061322587828487613111565b6001600160a01b0316600080516020615e368339815191521490565b8060006134488288604080518082019091529182526001600160a01b0316602082015290565b905060005b8281101561349957801561345f573099505b6134918a8a89848a8a8a8881811061347957613479615ae5565b905060200281019061348b9190615afb565b886140c1565b60010161344d565b50505050505050505050565b6134b7826001600160a01b0316613406565b1561369a576040516370a0823160e01b81526000906006602160991b01906370a08231906134e9903090600401615802565b602060405180830381865afa158015613506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352a9190615bcb565b905080156136105760405163a9059cbb60e01b8152600080516020615e568339815191526004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af115801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af9190615d10565b50604051632e1a7d4d60e01b815260048101829052600080516020615e5683398151915290632e1a7d4d90602401600060405180830381600087803b1580156135f757600080fd5b505af115801561360b573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610f885747801561033d576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613674576040519150601f19603f3d011682016040523d82523d6000602084013e613679565b606091505b505090508061203f5760405162461bcd60e51b815260040161012490615c47565b6001600160a01b0381163014610fbe576040516370a0823160e01b81526000906001600160a01b038416906370a08231906136d9903090600401615802565b602060405180830381865afa1580156136f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371a9190615bcb565b90508015610f8857610f88838383612f49565b600080613742848c8c8c87600001518c6120c6565b915091506137548b838b8b8a8a61459c565b50613762848b838a876122bd565b505050505050505050505050565b600061378882600081518110612c7d57612c7d615ae5565b905060008060008451905060005b818110156138ba5780156137cb576137b9868281518110612c7d57612c7d615ae5565b94506137c58530612046565b9650309a505b306137d7600184615b4e565b821480156137e3575088155b156137ef575088613887565b6137fa600184615b4e565b8210801561383057508661380f836001615cfd565b8151811061381f5761381f615ae5565b602002602001015160200151516001145b156138825786613841836001615cfd565b8151811061385157613851615ae5565b60200260200101516020015160008151811061386f5761386f615ae5565b6020026020010151905060019450613887565b600094505b6138ae8c8c838b8b87815181106138a0576138a0615ae5565b6020026020010151896148ec565b50839250600101613796565b5050505050505050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015610f19573d801561390957600160005114601f3d11169150613911565b6000863b1191505b50949350505050565b6000613b41565b828152600060206000600484600401865afa613956576139566054700419d95d081d1bdad95b8819985a5b195960621b611ad2565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa6139a4576139a4605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611ad2565b600051915083836004015260206000602485855afa6139e1576139e16059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b611ad2565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa6139a4576139a4605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611ad2565b668b0367c240bc6b60c21b8152600060406000600484600401875afa613a7357613a73605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b611ad2565b600051602051868015613a9f578915613a9757613a9087866139ed565b8390039650505b909190613ab6565b8815613ab657613aaf8786613961565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015613af05781600484015260006024840152613afe565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16119e8576119e8605470041cddd85c0818d85b1b0819985a5b195960621b611ad2565b846020850281018580613b6857613b68604e6b0b656d70747920706f6f6c7360901b611ad2565b5060405182358b600080516020615e368339815191521460018114613c21573415613bad57613bad60557111696e76616c6964206d73672e76616c756560581b611ad2565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af1613c1c57613c1c6056720498db185a5b481d1bdad95b8819985a5b195960521b611ad2565b613ce0565b60018c341003613c4b57613c4b60557111696e76616c6964206d73672e76616c756560581b611ad2565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1613c9157613c916056720499195c1bdcda5d081155120819985a5b195960521b611ad2565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af1613ce057613ce0605874051d1c985b9cd9995c8815d155120819985a5b195960421b611ad2565b508a9450602084015b83811015613d3f578035613d336001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b613a30565b96509150602001613ce9565b5060009350600160fe1b81168015613e7b57600080516020615e368339815191529450613d993063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613a30565b9550672e1a7d4da9059cbb60c01b8352600080516020615e5683398151915260088401528560288401526020600060448560040160006006602160991b015af1613e0057613e00605874051d1c985b9cd9995c8815d155120819985a5b195960421b611ad2565b856004840152602060006024856000600080516020615e568339815191525af1613e4657613e4660577304ddda5d1a191c985dc81155120819985a5b1959604a1b611ad2565b600080600080898b5af1613e7657613e7660577304dd1c985b9cd9995c881155120819985a5b1959604a1b611ad2565b6140b1565b60009350600160ff1b82168015613f2957600160fc1b831615613f24576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa613ee157613ee1605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611ad2565b600051955087846004015260206000602486895afa613f1e57613f1e605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b611ad2565b60005194505b613fc1565b600160fd1b831615613fc1576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa613f7e57613f7e605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611ad2565b600051955087846004015260206000602486895afa613fbb57613fbb605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b611ad2565b60005194505b50613ff98763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613a30565b9550846000106001811461406257600160ff1b8316801561403a576140336770a082310dfe168160c01b6001600160a01b03861687613921565b965061405c565b6140596770a08231d21220a760c01b6001600160a01b03861687613921565b96505b506140af565b6770a082310dfe168160c01b845287846004015260206000602486895afa6140a7576140a76058740519d95d0818985b185b98d953d98819985a5b195960421b611ad2565b846000510396505b505b5050505050979650505050505050565b60008060006140d38560800135611920565b905060006140e18680615d2d565b90501161412a5760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610124565b6141376040860186615d2d565b90506141438680615d2d565b905014801561416a575061415a6060860186615d2d565b90506141668680615d2d565b9050145b801561418e575061417e6020860186615d2d565b905061418a8680615d2d565b9050145b6141d15760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610124565b8615614291576040516370a0823160e01b81526001600160a01b038216906370a0823190614203903090600401615802565b602060405180830381865afa158015614220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142449190615bcb565b9750600088116142915760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610124565b60005b61429e8680615d2d565b90508110156138ba5760008080806142b960408b018b615d2d565b868181106142c9576142c9615ae5565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b84146143485760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610124565b8284108015614358575088518311155b61439e5760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610124565b6143a88289615cfd565b975060016143b68b80615d2d565b6143c1929150615b4e565b85036144145787612710146144145760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610124565b50600060016144238b80615d2d565b61442e929150615b4e565b85036144455761443e878e615b4e565b905061446b565b612710614452838f615be4565b61445c9190615bfb565b90506144688188615cfd565b96505b6144ac8f61447c60208d018d615d2d565b8881811061448c5761448c615ae5565b90506020020160208101906144a19190615b1b565b8c6080013584614a7a565b5087513090831480156144bd57508a155b156144c557508c5b61458d6144d560408c018c615d2d565b878181106144e5576144e5615ae5565b602002919091013590506144f98c80615d2d565b8881811061450957614509615ae5565b905060200201602081019061451e9190615b1b565b61452b60608e018e615d2d565b8981811061453b5761453b615ae5565b905060200281019061454d9190615d76565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e0151869150614bfc565b50836001019350505050614294565b6000614827565b6000856001600160ff1b0310156145c557630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461465957630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af18061464d5760206000fd5b5060206000803e6146bc565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806146b45760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156146e2576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361470a57631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610fbe57610fbe60577304d5d155120819195c1bdcda5d0819985a5b1959604a1b611ad2565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615e56833981519152600482015283602482015260008060448360006006602160991b015af19050806147ad576147ad605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b611ad2565b8360048301526000806024846000600080516020615e568339815191525af19050806147f6576147f6605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b611ad2565b60008060008087875af190508061033d5761033d605571045cd95b9908195d1a195c8819985a5b1959605a1b611ad2565b82601f19602084028201018380614849576333f3e07b60e11b60005260046000fd5b50886000341180156148625761485e896146ef565b309a505b5087606052825b8281101561488c5761487f898235848e306145a3565b309b509850602001614869565b506000600160fd1b83351611925082600181146148ae5780156148cd576148de565b6148bc898435848e306145a3565b94506148c8858b614742565b6148de565b6148db898435848e8e6145a3565b94505b505050509695505050505050565b6000805b835151811015612f3f5760008460400151828151811061491257614912615ae5565b602090810291909101015190506001600160a01b038116600160ff1b821661ffff60a084901c166149438187615cfd565b88515190965061495590600190615b4e565b85036149bc576127108611156149bc5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610124565b86614a1b57600081612710146149e8576127106149d9838c615be4565b6149e39190615bfb565b6149ea565b895b9050614a198d8a602001518881518110614a0657614a06615ae5565b60200260200101518b6080015184614a7a565b505b50614a648188600001518681518110614a3657614a36615ae5565b60200260200101518b858b606001518981518110614a5657614a56615ae5565b60200260200101518f614c17565b5050508080614a7290615dbc565b9150506148f0565b6001600160a01b038216600760f91b8316601f60fb1b8101614a9d57505061033d565b600160fa1b8103614b5f5782600003614b4d5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601614add57479250614b4d565b6040516370a0823160e01b81526001600160a01b038316906370a0823190614b09903090600401615802565b602060405180830381865afa158015614b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b4a9190615bcb565b92505b614b58828685612f49565b505061033d565b600160f91b8103614b7157505061033d565b306001600160a01b03871603614b9157614b8c828685612f49565b610ccc565b60405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690614bce9085908a908a908990600401615c1d565b600060405180830381600087803b158015614be857600080fd5b505af1158015613499573d6000803e3d6000fd5b600160ff1b85166001600160a01b0386166132258287868489885b8515614d1c57600080866001600160a01b0316636f7929f260e01b878787604051602401614c4793929190615dd5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614c956001600160a01b038616650f2882bf0b3360d21b615cfd565b604051602001614ca6929190615e01565b60408051601f1981840301815290829052614cc091615e23565b6000604051808303816000865af19150503d8060008114614cfd576040519150601f19603f3d011682016040523d82523d6000602084013e614d02565b606091505b509150915081614d1557614d1581614e10565b5050610ccc565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614d4693929190615dd5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614d946001600160a01b038616650f2882bf0b3360d21b615cfd565b604051602001614da5929190615e01565b60408051601f1981840301815290829052614dbf91615e23565b6000604051808303816000865af19150503d8060008114614dfc576040519150601f19603f3d011682016040523d82523d6000602084013e614e01565b606091505b509150915081612f3f57612f3f815b805115614e1f57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610124565b50565b60008060408385031215614e7357600080fd5b50508035926020909101359150565b6001600160a01b0381168114614e5d57600080fd5b8035614ea281614e82565b919050565b600060a08284031215614eb957600080fd5b50919050565b60008083601f840112614ed157600080fd5b5081356001600160401b03811115614ee857600080fd5b6020830191508360208260051b8501011115614f0357600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614f2957600080fd5b8935985060208a0135614f3b81614e82565b9750614f4a8b60408c01614ea7565b965060e08a01356001600160401b0380821115614f6657600080fd5b614f728d838e01614ebf565b90985096506101008c0135915080821115614f8c57600080fd5b614f988d838e01614ebf565b90965094506101208c0135915080821115614fb257600080fd5b50614fbf8c828d01614ebf565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614fef57600080fd5b863595506020870135945060408701359350606087013561500f81614e82565b925060808701356001600160401b0381111561502a57600080fd5b61503689828a01614ebf565b979a9699509497509295939492505050565b6000806000806000610100868803121561506157600080fd5b85359450602086013561507381614e82565b93506150828760408801614ea7565b925060e08601356001600160401b0381111561509d57600080fd5b6150a988828901614ebf565b969995985093965092949392505050565b6000806000806000608086880312156150d257600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561509d57600080fd5b60005b83811015615118578181015183820152602001615100565b50506000910152565b600081518084526151398160208601602086016150fd565b601f01601f19169290920160200192915050565b6020815260006151606020830184615121565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561519f5761519f615167565b60405290565b60405161014081016001600160401b038111828210171561519f5761519f615167565b604051601f8201601f191681016001600160401b03811182821017156151f0576151f0615167565b604052919050565b600060a0828403121561520a57600080fd5b61521261517d565b905081358152602082013561522681614e82565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561526a5761526a615167565b5060051b60200190565b600082601f83011261528557600080fd5b8135602061529a61529583615251565b6151c8565b82815260059290921b840181019181810190868411156152b957600080fd5b8286015b848110156152d457803583529183019183016152bd565b509695505050505050565b600082601f8301126152f057600080fd5b8135602061530061529583615251565b82815260059290921b8401810191818101908684111561531f57600080fd5b8286015b848110156152d457803561533681614e82565b8352918301918301615323565b600082601f83011261535457600080fd5b81356001600160401b0381111561536d5761536d615167565b615380601f8201601f19166020016151c8565b81815284602083860101111561539557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126153c357600080fd5b813560206153d361529583615251565b82815260059290921b840181019181810190868411156153f257600080fd5b8286015b848110156152d45780356001600160401b038111156154155760008081fd5b6154238986838b0101615343565b8452509183019183016153f6565b600061543f61529584615251565b838152905060208101600584901b830185101561545b57600080fd5b825b8460051b84018110156125e2576001600160401b03813581101561548057600080fd5b8135850187601f82011261549357600080fd5b6154a06152958235615251565b81358082526020808301929160051b8401018a8111156154bf57600080fd5b602084015b818110156155b45785813511156154da57600080fd5b8035850160a0818e03601f190112156154f257600080fd5b6154fa61517d565b876020830135111561550b57600080fd5b61551d8e6020808501358501016152df565b8152876040830135111561553057600080fd5b6155438e602060408501358501016152df565b6020820152876060830135111561555957600080fd5b61556c8e60206060850135850101615274565b6040820152876080830135111561558257600080fd5b6155958e602060808501358501016153b2565b606082015260a0919091013560808201528452602093840193016154c4565b50508552505060209283019291909101905061545d565b600082601f8301126155dc57600080fd5b61516083833560208501615431565b8015158114614e5d57600080fd5b8035614ea2816155eb565b600082601f83011261561557600080fd5b8135602061562561529583615251565b82815260059290921b8401810191818101908684111561564457600080fd5b8286015b848110156152d45780356001600160401b03808211156156685760008081fd5b90880190610140828b03601f19018113156156835760008081fd5b61568b6151a5565b878401358152604061569e818601614e97565b8983015260606156af818701614e97565b82840152608091506156c2828701614e97565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206157048187016155f9565b8383015292850135928484111561571d57600091508182fd5b61572b8e8b86890101615343565b90830152508652505050918301918301615648565b600080600080600080610140878903121561575a57600080fd5b61576488886151f8565b955060a08701356001600160401b038082111561578057600080fd5b61578c8a838b01615274565b965060c08901359150808211156157a257600080fd5b6157ae8a838b016155cb565b955060e08901359150808211156157c457600080fd5b506157d189828a01615604565b9350506101008701356157e381614e82565b91506101208701356157f481614e82565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e0848603121561582b57600080fd5b83359250602084013561583d81614e82565b915061584c8560408601614ea7565b90509250925092565b600080600080600080600080610120898b03121561587257600080fd5b883597506158838a60208b01614ea7565b965060c08901356001600160401b038082111561589f57600080fd5b6158ab8c838d01614ebf565b909850965060e08b01359150808211156158c457600080fd5b6158d08c838d01614ebf565b90965094506101008b01359150808211156158ea57600080fd5b506158f78b828c01614ebf565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561592457600080fd5b61592e87876151f8565b945060a08601356001600160401b038082111561594a57600080fd5b61595689838a01615274565b955060c088013591508082111561596c57600080fd5b61597889838a016155cb565b945060e088013591508082111561598e57600080fd5b5061599b88828901615604565b9250506101008601356159ad81614e82565b809150509295509295909350565b60008060008060e085870312156159d157600080fd5b843593506159e28660208701614ea7565b925060c08501356001600160401b038111156159fd57600080fd5b615a0987828801614ebf565b95989497509550505050565b60008060008060608587031215615a2b57600080fd5b843593506020850135925060408501356001600160401b0380821115615a5057600080fd5b818701915087601f830112615a6457600080fd5b813581811115615a7357600080fd5b886020828501011115615a8557600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215615ace57600080fd5b61516083836151f8565b6000615160368484615431565b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112615b1157600080fd5b9190910192915050565b600060208284031215615b2d57600080fd5b813561516081614e82565b634e487b7160e01b600052601160045260246000fd5b81810381811115615b6157615b61615b38565b92915050565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060208284031215615bdd57600080fd5b5051919050565b8082028115828204841417615b6157615b61615b38565b600082615c1857634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b600060208284031215615cc557600080fd5b815161516081614e82565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b80820180821115615b6157615b61615b38565b600060208284031215615d2257600080fd5b8151615160816155eb565b6000808335601e19843603018112615d4457600080fd5b8301803591506001600160401b03821115615d5e57600080fd5b6020019150600581901b3603821315614f0357600080fd5b6000808335601e19843603018112615d8d57600080fd5b8301803591506001600160401b03821115615da757600080fd5b602001915036819003821315614f0357600080fd5b600060018201615dce57615dce615b38565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090610f1690830184615121565b60008351615e138184602088016150fd565b9190910191825250602001919050565b60008251615b118184602087016150fd56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f828bc75b2b63dac9dd84642acce1bb88e8425311bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba2646970667358221220f88b99858f75640c877cb121c8781d39508801316d07ff7f7633fb76a08b794764736f6c63430008110033