0 txs
15 calls
constructor
No constructor.
functions
chain
viewfunction chain() view returns (string)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TRADER_ROLE
viewfunction TRADER_ROLE() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addLiquidity
nonpayablefunction addLiquidity(address token0Address, address token1Address, uint256 token0Amount, uint256 token1Amount, address positionManagerAddress, uint160 sqrtPriceX96, int24 tickLower, int24 tickUpper, uint24 fee) returns (uint256, uint128, uint256, uint256)
adjustLiquidity
nonpayablefunction adjustLiquidity(uint256 poolID, uint160 newSqrtPriceX96, int24 newTickLower, int24 newTickUpper, uint24 fee, uint256 token0Amount, uint256 token1Amount, address positionManagerAddress, address token0Address, address token1Address) returns (uint256, uint128)
arbitrage
nonpayablefunction arbitrage(tuple arbitrageParams) returns (tuple arbitrageReceipt)
burnNFT
nonpayablefunction burnNFT(uint256 tokenId, address positionManagerAddress)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseLiquidity
nonpayablefunction increaseLiquidity(uint256 tokenId, uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min, address positionManagerAddress) returns (uint128 liquidity, uint256 amount0, uint256 amount1)
initialize
nonpayablefunction initialize(address owner, string chain_)
issue
nonpayablefunction issue(tuple issueParams) returns (tuple issueReceipt)
issueUSSI
nonpayablefunction issueUSSI(tuple issueUSSIParams) returns (tuple issueUSSIReceipt)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 tokenId, uint128 liquidity, address positionManagerAddress, address token0Address, address token1Address)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackArbitrage
nonpayablefunction rollbackArbitrage(tuple arbitrageReceipt) returns (tuple)
swap
nonpayablefunction swap(tuple swapParams) returns (uint256 outAmount)
transfer
nonpayablefunction transfer(address tokenAddress, address to, uint256 amount)
transferLiquidityPool
nonpayablefunction transferLiquidityPool(address from, address to, uint256 tokenId, address positionManagerAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withDraw
nonpayablefunction withDraw(address tokenAddress)
events
AddLiquidity
event AddLiquidity(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
AdjustLiquidity
event AdjustLiquidity(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
Arbitrage
event Arbitrage(((address inToken, uint256 inAmount, address outToken, uint256 outAmount, address issuer, uint8 issueType, uint256 nonce) issueReceipt, address swapRouter, address swapRouterBase, uint24 fee, address earnToken, uint256 outAmount, int256 earn, uint256 amountOutMinimum, uint8 swapRouterType) arbitrageReceipt)
IncreaseLiquidity
event IncreaseLiquidity(uint128 liquidity, uint256 amount0, uint256 amount1)
Initialized
event Initialized(uint64 version)
Issue
event Issue((address inToken, uint256 inAmount, address outToken, uint256 outAmount, address issuer, uint8 issueType, uint256 nonce) issueReceipt)
IssueUSSI
event IssueUSSI(uint256 inAmount, uint256 outAmount, bytes32 orderHash)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RemoveLiquidity
event RemoveLiquidity(uint256 tokenId, uint128 liquidity)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
RollbackArbitrage
event RollbackArbitrage(((address inToken, uint256 inAmount, address outToken, uint256 outAmount, address issuer, uint8 issueType, uint256 nonce) issueReceipt, address swapRouter, address swapRouterBase, uint24 fee, address earnToken, uint256 outAmount, int256 earn, uint256 amountOutMinimum, uint8 swapRouterType) arbitrageReceipt)
Swap
event Swap(uint256 outAmount)
Transfer
event Transfer(address tokenAddress, address to, uint256 amount)
TransferLiquidityPool
event TransferLiquidityPool(address owner, address to, uint256 tokenId)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address tokenAddress, uint256 balance)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346029573060805261541d908161002e823960805181818161223001526122d40152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461384d575080630a67d2c71461370c57806313d0fd2914612d29578063248a9ca314612ce95780632f2ff15d14612c9e5780633478b75c1461268b57806336568abe146126465780634a9f48e3146124a55780634f1ef2861461228457806352d1902d1461221d578063715018a6146121b45780637bd90b251461218c5780638da5cb5b1461215757806391d148541461210157806395dfb71f14611cfc578063a217fddf14611ce0578063ad3cb1cc14611c97578063ad4a76c514611ba9578063b58c861514611b35578063b8c438ab146117c3578063beabacc81461167e578063bfde43e3146111c6578063c763e5a1146110f8578063d547741f146110a4578063e16b41bc14610b2f578063e293a7bc14610496578063f0a56fc81461045b578063f2fde38b1461042e5763f399e22e1461015d575f80fd5b3461042b57604036600319011261042b576101766138a0565b906024356001600160401b03811161042957610196903690600401613c25565b915f5160206153c85f395f51905f52549060ff8260401c1615916001600160401b03811680159081610421575b6001149081610417575b15908161040e575b506103ff5767ffffffffffffffff1981166001175f5160206153c85f395f51905f52556102329190836103d3575b5061020c6152be565b6102146152be565b61021d81614c9a565b6102256152be565b61022d6152be565b614e7f565b5082516001600160401b0381116103bf5761024d8354613b68565b601f8111610358575b506020601f82116001146102ed578394829394926102e2575b50508160011b915f199060031b1c19161782555b61028a5780f35b68ff0000000000000000195f5160206153c85f395f51905f5254165f5160206153c85f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b015190505f8061026f565b8380525f5160206153685f395f51905f5290601f198316855b81811061034057509583600195969710610328575b505050811b018255610283565b01515f1960f88460031b161c191690555f808061031b565b9192602060018192868b015181550194019201610306565b838052601f820160051c5f5160206153685f395f51905f520190602083106103aa575b601f0160051c5f5160206153685f395f51905f5201905b81811061039f5750610256565b848155600101610392565b5f5160206153685f395f51905f52915061037b565b634e487b7160e01b83526041600452602483fd5b68ffffffffffffffffff191668010000000000000001175f5160206153c85f395f51905f52555f610203565b63f92ee8a960e01b8452600484fd5b9050155f6101d5565b303b1591506101cd565b8491506101c3565b505b80fd5b503461042b57602036600319011261042b5761045861044b6138a0565b610453614d0b565b614c9a565b80f35b503461042b578060031936011261042b5760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b503461042b5736600319016101e081126104295760e0604051916104b983613a23565b12610429576040516104ca816139ec565b6104d26138a0565b815260243560208201526104e46138e2565b604082015260643560608201526084356001600160a01b0381168103610b2757608082015260a4356002811015610b275760a082015260c43560c0820152815260e4356001600160a01b0381168103610b2b5760208201908152610104356001600160a01b0381168103610b275760408301908152610124359362ffffff8516850361042b5760608401948552610144356001600160a01b038116810361042957608085015260a084019461016435865260c08501936101843585526101a43560e08701526101c4359360ff85168503610b275761010087019485526105c8614b5b565b506105d1614dca565b86519460a08601516002811015610a6557610aa85760018060a01b0360808701511661012060c08801516024604051809481936316d3645b60e31b835260048301525afa9081156109aa579060c0918791610a79575b5001516004811015610a65575b6004811015610a6557600303610a2b5785516040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa80156109aa5786906109f7575b6106cc9150610692602089019182511115614ba5565b87518551604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529360209285921690829081906044820190565b03915afa9182156109ec5790879493929185926109b5575b505111610922575b5160ff1660010361084e575050518351604085015192516001600160a01b039283169391831692919091169042603c81019162ffffff1690821061083a5792610788928695926020958c51926040519461074586613a07565b8552878501526040840152306060840152608083015260a08201528460c08201528460e082015260405194858094819363414bf38960e01b835260048301614af2565b03925af191821561082e57916107f5575b509360606107b1926107f19680935b52015190614bf1565b90527faba6f16c51fe9d024108e62653104b8bf86b06e69b56572da13d9e5518f7ea3c604051806107e28482613ba0565b0390a160405191829182613ba0565b0390f35b9490506020853d602011610826575b8161081160209383613a3f565b810103126108225793516060610799565b5f80fd5b3d9150610804565b604051903d90823e3d90fd5b634e487b7160e01b86526011600452602486fd5b51855160408088015195518b5191519496602096506108c9956001600160a01b0395861695909462ffffff90931692918116911661088b856139ec565b845286840152604083015230606083015260808201528460a08201528460c08201526040519485809481936304e45aaf60e01b835260048301614a94565b03925af191821561082e57916108ed575b509360606107b1926107f19680936107a8565b9490506020853d60201161091a575b8161090960209383613a3f565b8101031261082257935160606108da565b3d91506108fc565b8651845160405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529394929392602092849260449284929091165af180156109aa5786939260019260ff9261097b575b509150506106ec565b61099c9060203d6020116109a3575b6109948183613a3f565b810190613c8d565b505f610972565b503d61098a565b6040513d88823e3d90fd5b945090506020843d6020116109e4575b816109d260209383613a3f565b8101031261082257869351905f6106e4565b3d91506109c5565b6040513d89823e3d90fd5b506020813d602011610a23575b81610a1160209383613a3f565b81010312610822576106cc905161067c565b3d9150610a04565b60405162461bcd60e51b81526020600482015260126024820152711a5cdcdd59481b9bdd081c995a9958dd195960721b6044820152606490fd5b634e487b7160e01b86526021600452602486fd5b610a9b91506101203d8111610aa1575b610a938183613a3f565b810190614c09565b5f610627565b503d610a89565b60018060a01b0360808701511661012060c088015160246040518094819363e20f885360e01b835260048301525afa9081156109aa579060c0918791610b08575b5001516004811061063457634e487b7160e01b86526021600452602486fd5b610b2191506101203d8111610aa157610a938183613a3f565b5f610ae9565b8380fd5b8280fd5b503461042b57602036600319011261042b576004356001600160401b038111610429578036039060e0600319830112610b2b57610b6a614b5b565b91610b73614dca565b606482013593841561105f5760248301916001600160a01b03610b9584613c79565b161561101a5760048401359060821901811215610429576004610bba918501016141e5565b90610bc483613c79565b9160448501916024610bd584613c79565b946040840190602060018060a01b03835116604051948580926370a0823160e01b82523060048301525afa92831561100f578493610fdb575b50610c20606086019384511115614ba5565b8151604051636eb1769f60e11b81523060048201526001600160a01b039283166024820181905292909160209183916044918391165afa908115610f9b5790859392918491610fa6575b50845111610f30575b8293602093508a60c4810199600160ff610c8c8d614a4e565b1603610e60575092518751610d16946001600160a01b0392831693929091169162ffffff91610cbd90608401614a6e565b90519260405194610ccd86613a07565b85528785015216604083015230606083015242608083015260a082015260a48b013560c08201528460e082015260405194858094819363414bf38960e01b835260048301614af2565b03925af191821561082e5791610e2e575b505b610d3860208301988951613ecf565b811115610dfd57608460ff96610dc796610d81846107f19c610da49660a08e8a62ffffff9b8252600180841b03905116608082015201528c60e060a48701359101525190614bf1565b60c08b01526001600160a01b0390610d9890613c79565b1660208a015201614a6e565b1660608601526001600160a01b0390610dbc90613c79565b166040850152614a4e565b166101008201527f9897fb615e63b8a3bddce3e2a6ba5d331505d4d1025662f8736995b587495dfa604051806107e28482613ba0565b60405162461bcd60e51b81526020600482015260096024820152681b9bc81c1c9bd99a5d60ba1b6044820152606490fd5b90506020813d602011610e58575b81610e4960209383613a3f565b8101031261082257515f610d27565b3d9150610e3c565b93518851610ede9594506001600160a01b039182169391169162ffffff9190610e8b90608401614a6e565b90519260405194610e9b866139ec565b855287850152166040830152306060830152608082015260a48b013560a08201528460c08201526040519485809481936304e45aaf60e01b835260048301614a94565b03926001600160a01b03165af191821561082e5791610efe575b50610d29565b90506020813d602011610f28575b81610f1960209383613a3f565b8101031261082257515f610ef8565b3d9150610f0c565b91602060018060a09694961b0385511660446040518094819363095ea7b360e01b83528860048401525f1960248401525af18015610f9b579160209391869593610f7e575b50939250610c73565b610f9490853d87116109a3576109948183613a3f565b505f610f75565b6040513d87823e3d90fd5b9350506020833d602011610fd3575b81610fc260209383613a3f565b81010312610822578492515f610c6a565b3d9150610fb5565b9092506020813d602011611007575b81610ff760209383613a3f565b810103126108225751915f610c0e565b3d9150610fea565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152601b60248201527f7377617020726f757465722061646472657373206973207a65726f00000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f657374696d617465436f7374206d75737420626967676572207468616e2030006044820152606490fd5b503461042b57604036600319011261042b576110f46004356110c46138b6565b906110ef6110ea825f525f5160206153a85f395f51905f52602052600160405f20015490565b614e39565b614fd2565b5080f35b503461042b578060031936011261042b57604051908080549061111a82613b68565b808552916001811690811561119f5750600114611156575b6107f18461114281860382613a3f565b604051918291602083526020830190613b1f565b8080525f5160206153685f395f51905f52939250905b8082106111855750909150810160200161114282611132565b91926001816020925483858801015201910190929161116c565b60ff191660208087019190915292151560051b850190920192506111429150839050611132565b503461042b5761012036600319011261042b576111e16138a0565b6111e96138b6565b91606435916044356111f961390e565b936112026138cc565b9560c435908160020b80920361167a5760e435908160020b80920361167657610104359362ffffff851680950361151a5761123b614dca565b90956001600160a01b0389811696929190889082908490869080851690841611611664575b5050604051636eb1769f60e11b81523060048201526001600160a01b038d811660248301529a8b169c93909a1699915060209050816044818c5afa908115611624579084918b9161162f575b50106115c6575b604051636eb1769f60e11b81523060048201526001600160a01b03909116602482015260208180604481015b03818d5afa908115611586579082918a91611591575b5010611531575b6040516309f56ab160e11b815260048101889052602481018a9052604481018690526001600160a01b03909a1660648b015260208a6084818b8a5af18015611526576114e5575b8798995060405196611354886139b5565b875260208701998a526040808801958652606088019485526080880193845260a0880192835260c0880191825260e0880189815261010089018a8152306101208b01908152426101408c019081529351634418b22b60e11b81529a516001600160a01b0390811660048d01529d518e1660248c0152975162ffffff1660448b01529551600290810b60648b0152945190940b6084890152915160a48801525160c4870152905160e4860152905161010485015290519095166101248301529351610144820152928390815a9361016492608095f180156114d857818093818093611481575b5050906107f1917f22fb3c4728e7cc5dd64003f4267d8fb1eb2580f5598050868300738a823d70476040518061147285858a8a85613b43565b0390a160405194859485613b43565b9350935050506080823d6080116114d0575b816114a060809383613a3f565b8101031261042b575080516107f16114ba60208401613c65565b916060604085015194015190929390915f611439565b3d9150611493565b50604051903d90823e3d90fd5b60208a3d60201161151e575b816114fe60209383613a3f565b8101031261151a5761151188999a613c43565b50899850611343565b8780fd5b3d91506114f1565b6040513d8a823e3d90fd5b60405163095ea7b360e01b8152600481018790525f1960248201526020816044818c8e5af1801561158657611567575b506112fc565b61157f9060203d6020116109a3576109948183613a3f565b505f611561565b6040513d8b823e3d90fd5b9150506020813d6020116115be575b816115ad60209383613a3f565b81010312610822578190515f6112f5565b3d91506115a0565b60405163095ea7b360e01b8152600481018890525f1960248201526020816044818d8d5af1801561162457916020916112df93611607575b509150506112b3565b61161d90833d85116109a3576109948183613a3f565b505f6115fe565b6040513d8c823e3d90fd5b9150506020813d60201161165c575b8161164b60209383613a3f565b81010312610822578390515f6112ac565b3d915061163e565b919a509450925090505f808080611260565b8680fd5b8580fd5b503461042b57606036600319011261042b576116986138a0565b6116a06138b6565b604435916116ac614d0b565b6040516370a0823160e01b81523060048201526001600160a01b03821690602081602481855afa80156109aa578591879161178e575b50111561174957836117197fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958561174394614d3e565b604080516001600160a01b0394851681529490931660208501529183019190915281906060820190565b0390a180f35b60405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746f74616c2062616c616e6365000000006044820152606490fd5b9150506020813d6020116117bb575b816117aa60209383613a3f565b81010312610822578490515f6116e2565b3d915061179d565b503461042b5761012036600319011261042b576117de614dca565b60c4356001600160a01b03811690818103610b2b57506001600160a01b03611804613db5565b604051636eb1769f60e11b81523060048201526001600160a01b038416602482015291849116602083604481845afa928315611b2a578293611af3575b50606435809310611a9d575b5050826101043560ff8116808203610b2b576001141590506119a15750611872613db5565b9061187b613dcb565b90611884614a5c565b603c42019081421161198d57928695926020959262ffffff611913966118a8614a7e565b94604051966118b688613a07565b60018060a01b0316875260018060a01b031689870152166040850152306060850152608084015260a083015260843560c083015260018060a01b031660e082015260405195868094819363414bf38960e01b835260048301614af2565b03925af190811561082e579061195a575b602091505b7f89f1d38d98c13362767fbcc2b0e375c1c3c4429b4648ea2a99839d962779b5d182604051838152a1604051908152f35b506020813d602011611985575b8161197460209383613a3f565b810103126108225760209051611924565b3d9150611967565b634e487b7160e01b87526011600452602487fd5b915060e4356001600160a01b038116808203611a9857602092611a4b92506119c7613db5565b906119d0613dcb565b9062ffffff6119dd614a5c565b6119e5614a7e565b93604051956119f3876139ec565b60018060a01b0316865260018060a01b031688860152166040840152306060840152608083015260843560a083015260018060a01b031660c08201526040519586809481936304e45aaf60e01b835260048301614a94565b03925af190811561082e5790611a65575b60209150611929565b506020813d602011611a90575b81611a7f60209383613a3f565b810103126108225760209051611a5c565b3d9150611a72565b505050fd5b60209060446040518094819363095ea7b360e01b83528860048401525f1960248401525af1801561100f57611ad4575b839061184d565b611aec9060203d6020116109a3576109948183613a3f565b505f611acd565b915091506020813d602011611b22575b81611b1060209383613a3f565b8101031261082257839051915f611841565b3d9150611b03565b6040513d84823e3d90fd5b503461042b57604036600319011261042b5780611b506138b6565b611b58614dca565b6001600160a01b0316803b15611ba657818091602460405180948193630852cd8d60e31b835260043560048401525af18015611b2a57611b955750f35b81611b9f91613a3f565b61042b5780f35b50fd5b503461042b57608036600319011261042b57611bc36138a0565b611bcb6138b6565b6044359183611bd86138f8565b611be0614d0b565b6001600160a01b0316803b1561042957604051632142170760e11b81526001600160a01b03848116600483015285166024820152604481018690529082908290606490829084905af18015611b2a57611c82575b5050604080516001600160a01b0392831681529290911660208301528101919091527f898a94bbeeaf4558c0ec5309ec9e2d02e33b2d804f626448cf0c81410049dcc6908060608101611743565b81611c8c91613a3f565b610b2757835f611c34565b503461042b578060031936011261042b57506107f1604051611cba604082613a3f565b60058152640352e302e360dc1b6020820152604051918291602083526020830190613b1f565b503461042b578060031936011261042b57602090604051908152f35b503461042b5760a036600319011261042b576004356024356001600160801b038116808203610b2757611d2d6138e2565b9084611d376138f8565b92611d4061390e565b90611d49614dca565b604051636eb1769f60e11b81523060048201526001600160a01b038281166024830181905296938116931690602081604481855afa908115610f9b5785916120c1575b50906001600160801b0385939210612062575b50604051636eb1769f60e11b81523060048201526001600160a01b039091166024820152905060208180604481015b0381855afa908115611fa6578391612025575b506001600160801b0311611fcf575b5050603c420180421161083a579085929160405191611e0e8361396b565b86835260208301908152604083018581526001600160801b0360608501928784526080860194855260405195630624e65f60e11b87525160048701525116602485015251604484015251606483015251608482015260408160a48186865af18015611fa657611fb1575b50604051611e858161399a565b84815230602082019081526001600160801b03604080840182815260608501838152825163fc6f786560e01b81529551600487015293516001600160a01b03166024860152518216604485015291511660648301528160848186865af18015611fa657611f78575b50803b1561042957818091602460405180948193630852cd8d60e31b83528960048401525af18015611b2a57611f63575b5050604080519283526001600160801b0390911660208301527f360bed94e59d45c337e752401b070a9acca8db04b1fe6fab36d5f71fc321d5ff919081908101611743565b81611f6d91613a3f565b610b2b57825f611f1e565b611f999060403d604011611f9f575b611f918183613a3f565b810190614a38565b50611eed565b503d611f87565b6040513d85823e3d90fd5b611fc99060403d604011611f9f57611f918183613a3f565b50611e78565b60209060446040518094819363095ea7b360e01b83528860048401525f1960248401525af180156109aa57612006575b8590611df0565b61201e9060203d6020116109a3576109948183613a3f565b505f611fff565b9250506020823d60201161205a575b8161204160209383613a3f565b81010312610822576001600160801b0387925190611de1565b3d9150612034565b60209060446040518095819363095ea7b360e01b83528b60048401525f1960248401525af190811561100f57611dce926020926120a4575b5090849250611d9f565b6120ba90833d85116109a3576109948183613a3f565b505f61209a565b92919450506020823d6020116120f9575b816120df60209383613a3f565b810103126108225790518893906001600160801b03611d8c565b3d91506120d2565b503461042b57604036600319011261042b57604061211d6138b6565b9160043581525f5160206153a85f395f51905f52602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b503461042b578060031936011261042b575f5160206153485f395f51905f52546040516001600160a01b039091168152602090f35b503461042b5760e06121a56121a036613938565b6141e5565b6121b26040518092613ab1565bf35b503461042b578060031936011261042b576121cd614d0b565b5f5160206153485f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461042b578060031936011261042b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036122755760206040515f5160206153885f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261042b576122996138a0565b906024356001600160401b0381116104295736602382011215610429576122ca903690602481600401359101613a7b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612483575b506124745761230c614d0b565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa8095859661243c575b5061235157634c9c8ce360e01b84526004839052602484fd5b9091845f5160206153885f395f51905f52810361242a5750813b15612418575f5160206153885f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156123fe57808360206110f495519101845af43d156123f6573d916123da83613a60565b926123e86040519485613a3f565b83523d85602085013e6152e9565b6060916152e9565b505050346124095780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d60201161246c575b8161245860209383613a3f565b810103126124685751945f612338565b8480fd5b3d915061244b565b63703e46dd60e11b8252600482fd5b5f5160206153885f395f51905f52546001600160a01b0316141590505f6122ff565b503461042b5760c036600319011261042b576124bf6138cc565b6124c7614dca565b60405160c081018181106001600160401b038211176126325790606091604052600435815260c4602082019160243583528560408201956044358752858301606435815260808401608435815260a0850191428352604051998a98899763219f5d1760e01b89525160048901525160248801525160448701525160648601525160848501525160a484015260018060a01b03165af18015611b2a5782918380926125e6575b50506107f1907f1fde8e94ba1202eba1c9b3fb89c9f8903b4bc62f08996d9cfb4183169a238d96604051806125bd848888846040919493926001600160801b03606083019616825260208201520152565b0390a1604051938493846040919493926001600160801b03606083019616825260208201520152565b92509250506060823d60601161262a575b8161260460609383613a3f565b8101031261042b575061261681613c65565b60208201516040909201516107f15f61256c565b3d91506125f7565b634e487b7160e01b84526041600452602484fd5b503461042b57604036600319011261042b576126606138b6565b336001600160a01b0382160361267c576110f490600435614fd2565b63334bd91960e11b8252600482fd5b503461042b5761269a36613938565b81604080516126a8816139d1565b82815282602082015201526126bb614dca565b606081013561013e1982360301811215610b2b5781019061014082360312610b2b5760405161014081018181106001600160401b03821117612c8a5760405282356001600160401b038111612468576127179036908501613c25565b8152602083013591600383101561246857602082019283526040840135604083015261274560608501613924565b60608301526080840135608083015260a082019260a0850135845260c083019460c0810135865260e081013560e08501526127976101206127896101008401613924565b928361010088015201613924565b6101208501526001600160a01b031690308203612c4557516003811015612c3157600103612a9a576001600160a01b036127d360208401613c79565b1690604051906370a0823160e01b82526004820152602081602481855afa9081156109ec578791612a68575b50845111612a1857859061284e60206001600160a01b0361281f86613c79565b604051636eb1769f60e11b815230600482015291166001600160a01b0316602482015291829081906044820190565b0381855afa908115611fa65783916129e3575b50855111612979575b5061288b6001600160a01b0361287f84613c79565b16926040810190613ca5565b9092803b15610b2b576128b6938360405180968195829463ec944f6f60e01b84528a60048501613d90565b03925af18015610f9b57612964575b50606093505b6040516128f6816128e86020820194602086526040830190613cd7565b03601f198101835282613a3f565b519020907fd76fd0d79d8952ec95119140333ced5e7c25c5871d62e89fa48ed5196a34147284825185516040519182526020820152846040820152a151915160408051612942816139d1565b8481526020810192835201918252604051928352516020830152516040820152f35b61296f858092613a3f565b610b2757836128c5565b60209060446001600160a01b0361298f86613c79565b60405163095ea7b360e01b8152911660048201525f1960248201529384928391905af180156109aa576129c4575b859061286a565b6129dc9060203d6020116109a3576109948183613a3f565b505f6129bd565b9250506020823d602011612a10575b816129ff60209383613a3f565b81010312610822578691515f612861565b3d91506129f2565b60405162461bcd60e51b815260206004820152602260248201527f72657175657374657220646f6e74206861766520656e6f7567682062616c616e604482015261636560f01b6064820152608490fd5b90506020813d602011612a92575b81612a8360209383613a3f565b8101031261082257515f6127ff565b3d9150612a76565b612afb906020906001600160a01b03612ab285613c79565b166001600160a01b03612ac486613c79565b604051636eb1769f60e11b81526001600160a01b039485166004820152911690921660248301529092839190829081906044820190565b03915afa9081156109aa578691612bff575b50835111612b84575b84612b2b6001600160a01b0361287f84613c79565b9092803b15610b2b57612b56938360405180968195829463a2a14b2560e01b84528a60048501613d90565b03925af18015610f9b57612b6f575b50606093506128cb565b612b7a858092613a3f565b610b275783612b65565b8460206001600160a01b03612b9884613c79565b1660446001600160a01b03612bac86613c79565b60405163095ea7b360e01b8152911660048201525f1960248201529384928391905af180156109aa57612be0575b50612b16565b612bf89060203d6020116109a3576109948183613a3f565b505f612bda565b90506020813d602011612c29575b81612c1a60209383613a3f565b8101031261082257515f612b0d565b3d9150612c0d565b634e487b7160e01b87526021600452602487fd5b60405162461bcd60e51b815260206004820152601860248201527f726571756573746572206973206e6f742074686520574c5000000000000000006044820152606490fd5b634e487b7160e01b85526041600452602485fd5b503461042b57604036600319011261042b576110f4600435612cbe6138b6565b90612ce46110ea825f525f5160206153a85f395f51905f52602052600160405f20015490565b614f2e565b503461042b57602036600319011261042b576020612d216004355f525f5160206153a85f395f51905f52602052600160405f20015490565b604051908152f35b50346108225761014036600319011261082257600435612d476138b6565b91604435918260020b809303610822576064358060020b8091036108225760843562ffffff81168091036108225760e435946001600160a01b0386169260a43560c43585890361082257610104356001600160a01b0381169081810361082257610124356001600160a01b038116999091908a830361082257602490612dcb614dca565b6101808b6040519384809263133f757160e31b82528560048301525afa9182156134ac578e905f93613641575b506020612e3691612e07614dca565b604051636eb1769f60e11b81523060048201526001600160a01b03909116602482015291829081906044820190565b0381895afa9081156134ac578f918e915f91613602575b506001600160801b031161359f575b604051636eb1769f60e11b81523060048201526001600160a01b03909216602483015260209082908180604481015b03915afa9081156134ac578d918d915f91613560575b506001600160801b0311613507575b5050603c42018042116134f35760406001600160801b039160a48e5f845191612ed88361396b565b8783526020830194878a1686528684018381526060850190848252608086019283528851998a988997630624e65f60e11b8952516004890152511660248701525160448601525160648501525160848401525af180156134ac576134d5575b508a60408051612f468161399a565b83815230602082019081526001600160801b0383830181815260608401828152855163fc6f786560e01b81529451600486015292516001600160a01b031660248501525181166044840152905116606482015291829060849082905f905af180156134ac576134b7575b508a3b15610822575f808c602460405180948193630852cd8d60e31b83528760048401525af180156134ac57613474575b50604080519182526001600160801b039290921660208201527f360bed94e59d45c337e752401b070a9acca8db04b1fe6fab36d5f71fc321d5ff9190a1613026614dca565b8385839b839511613462575b5050604051636eb1769f60e11b81523060048201526001600160a01b038d811660248301529a8b169c93909a1699915060209050816044818c5afa908115611624579084918b9161342d575b50106133cf575b604051636eb1769f60e11b81523060048201526001600160a01b03909116602482015260208180604481015b03818d5afa908115611586579082918a9161339a575b5010613345575b6040516309f56ab160e11b815260048101889052602481018a9052604481018690526001600160a01b03909a1660648b015260208a6084818b8a5af1801561152657613308575b8798995060405196613126886139b5565b875260208701998a526040808801958652606088019485526080880193845260a0880192835260c0880191825260e0880189815261010089018a8152306101208b01908152426101408c019081529351634418b22b60e11b81529a516001600160a01b0390811660048d01529d518e1660248c0152975162ffffff1660448b01529551600290810b60648b0152945190940b6084890152915160a48801525160c4870152905160e4860152905161010485015290519095166101248301529351610144820152928390815a9361016492608095f180156114d857818093818093613293575b5050907fdc023e2827a57fda52ede5e1b4173a42da1c454f36524c381402d35c0acba107917f22fb3c4728e7cc5dd64003f4267d8fb1eb2580f5598050868300738a823d70476040518061326285858a8a85613b43565b0390a1613276604051928392878785613b43565b0390a1604080519182526001600160801b03929092166020820152f35b9350935050506080823d608011613300575b816132b260809383613a3f565b8101031261042b575080517fdc023e2827a57fda52ede5e1b4173a42da1c454f36524c381402d35c0acba1076132ea60208401613c65565b916060604085015194015190929390915f61320b565b3d91506132a5565b60208a3d60201161333d575b8161332160209383613a3f565b8101031261151a5761333488999a613c43565b50899850613115565b3d9150613314565b60405163095ea7b360e01b8152600481018790525f1960248201526020816044818c8e5af180156115865761337b575b506130ce565b6133939060203d6020116109a3576109948183613a3f565b505f613375565b9150506020813d6020116133c7575b816133b660209383613a3f565b81010312610822578190515f6130c7565b3d91506133a9565b60405163095ea7b360e01b8152600481018890525f1960248201526020816044818d8d5af1801561162457916020916130b193613410575b50915050613085565b61342690833d85116109a3576109948183613a3f565b505f613407565b9150506020813d60201161345a575b8161344960209383613a3f565b81010312610822578390515f61307e565b3d915061343c565b919a509450925090505f808080613032565b7f360bed94e59d45c337e752401b070a9acca8db04b1fe6fab36d5f71fc321d5ff92919d505f6134a391613a3f565b5f9c9091612fe1565b6040513d5f823e3d90fd5b6134cf9060403d604011611f9f57611f918183613a3f565b50612fb0565b6134ed9060403d604011611f9f57611f918183613a3f565b50612f37565b634e487b7160e01b5f52601160045260245ffd5b5f916044602092604051948593849263095ea7b360e01b84526004840152811960248401525af180156134ac57613541575b508b8b612eb0565b6135599060203d6020116109a3576109948183613a3f565b505f613539565b925050506020813d602011613597575b8161357d60209383613a3f565b81010312610822578b6001600160801b038e925190612ea1565b3d9150613570565b505060405163095ea7b360e01b8152600481018c90525f1960248201526020816044815f8a5af19081156134ac578f8e602092612e8b946135e5575b5091509150612e5c565b6135fb90843d86116109a3576109948183613a3f565b505f6135db565b925050506020813d602011613639575b8161361f60209383613a3f565b8101031261082257518e908d906001600160801b03612e4d565b3d9150613612565b925050610180823d8211613704575b8161365e6101809383613a3f565b810103126108225781516bffffffffffffffffffffffff8116036108225761368860208301613c43565b5061369560408301613c43565b506136a260608301613c43565b50608082015162ffffff81160361082257612e3660208f936136c660a08201613c57565b506136d360c08201613c57565b506136fb6101606136e660e08401613c65565b926136f46101408201613c65565b5001613c65565b50939150612df8565b3d9150613650565b34610822576020366003190112610822576137256138a0565b61372d614d0b565b6040516370a0823160e01b81523060048201526001600160a01b03821691602082602481865afa9182156134ac575f92613819575b5081156137c9576137ac827f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649460018060a01b035f5160206153485f395f51905f52541690614d3e565b604080516001600160a01b039290921682526020820192909252a1005b60405162461bcd60e51b815260206004820152602260248201527f4e6f20746f6b656e7320617661696c61626c6520666f72207769746864726177604482015261185b60f21b6064820152608490fd5b9091506020813d602011613845575b8161383560209383613a3f565b8101031261082257519083613762565b3d9150613828565b34610822576020366003190112610822576004359063ffffffff60e01b821680920361082257602091637965db0b60e01b811490811561388f575b5015158152f35b6301ffc9a760e01b14905083613888565b600435906001600160a01b038216820361082257565b602435906001600160a01b038216820361082257565b60a435906001600160a01b038216820361082257565b604435906001600160a01b038216820361082257565b606435906001600160a01b038216820361082257565b608435906001600160a01b038216820361082257565b35906001600160a01b038216820361082257565b602060031982011261082257600435906001600160401b0382116108225760809082900360031901126108225760040190565b60a081019081106001600160401b0382111761398657604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b0382111761398657604052565b61016081019081106001600160401b0382111761398657604052565b606081019081106001600160401b0382111761398657604052565b60e081019081106001600160401b0382111761398657604052565b61010081019081106001600160401b0382111761398657604052565b61012081019081106001600160401b0382111761398657604052565b90601f801991011681019081106001600160401b0382111761398657604052565b6001600160401b03811161398657601f01601f191660200190565b929192613a8782613a60565b91613a956040519384613a3f565b829481845281830111610822578281602093845f960137010152565b80516001600160a01b03908116835260208083015190840152604080830151821690840152606080830151908401526080808301519091169083015260a08101516002811015613b0b5760a083015260c090810151910152565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b909493926001600160801b036060936080840197845216602083015260408201520152565b90600182811c92168015613b96575b6020831014613b8257565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613b77565b9190916101c060ff6101006101e0840195613bbc858251613ab1565b60208101516001600160a01b0390811660e0878101919091526040830151821684880152606083015162ffffff16610120880152608083015190911661014087015260a082015161016087015260c08201516101808701528101516101a0860152015116910152565b9080601f8301121561082257816020613c4093359101613a7b565b90565b51906001600160a01b038216820361082257565b51908160020b820361082257565b51906001600160801b038216820361082257565b356001600160a01b03811681036108225790565b90816020910312610822575180151581036108225790565b903590601e198136030182121561082257018035906001600160401b0382116108225760200191813603831361082257565b90613ced82516101408352610140830190613b1f565b916020810151906003821015613b0b576101209160208401526040810151604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e084015260018060a01b03610100820151166101008401528160018060a01b039101511691015290565b908060209392818452848401375f828201840152601f01601f1916010190565b91613da7613c409492604085526040850190613cd7565b926020818503910152613d70565b6004356001600160a01b03811681036108225790565b6024356001600160a01b03811681036108225790565b60405190613dee826139ec565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b903590605e1981360301821215610822570190565b903590601e198136030182121561082257018035906001600160401b03821161082257602001918160051b3603831361082257565b9015613e7c57803590609e1981360301821215610822570190565b634e487b7160e01b5f52603260045260245ffd5b818102929181159184041417156134f357565b8115613ead570490565b634e487b7160e01b5f52601260045260245ffd5b604d81116134f357600a0a90565b919082018092116134f357565b9035601e19823603018112156108225701602081359101916001600160401b03821161082257813603831361082257565b9035601e19823603018112156108225701602081359101916001600160401b038211610822578160051b3603831361082257565b906020838281520160208260051b85010193835f915b848310613f675750505050505090565b909192939495601f198282030185528635609e1984360301811215610822578301613fdf613fc4613fa9613f9b8480613edc565b60a0875260a0870191613d70565b613fb66020850185613edc565b908683036020880152613d70565b613fd16040840184613edc565b908583036040870152613d70565b60608201359060ff8216809203610822578360808060209586956060600199015201359101529801950193019190949394613f57565b90602083828152019260208260051b82010193835f925b84841061403c5750505050505090565b909192939495602080614064600193601f1986820301885261405e8b88613edc565b90613d70565b980194019401929493919061402c565b93929190845260606020850152803561015e198236030181121561082257816141ce6040936141e093019160608089015261417a61415a61413a61411a6140d48c6102206140c28a80613edc565b91909261016060c08201520191613d70565b8c60e06001600160a01b036140eb60208c01613924565b16910152878a01356101008e01528c61410760608a018a613f0d565b9161012060bf1982860301910152613f41565b6141276080880188613f0d565b8d830360bf19016101408f015290613f41565b61414760a0870187613f0d565b8c830360bf19016101608e015290614015565b61416760c0860186613f0d565b8b830360bf19016101808d015290614015565b60e08401356101a08a01526101008401356101c08a01526101208401356101e08a0152926001600160a01b03906141b49061014001613924565b166102008901526020810135608089015284810190613edc565b878303605f190160a089015290613d70565b930152565b6141ed613de1565b906141f6614dca565b60208101906001600160a01b0361420c83613c79565b16156149fa576001600160a01b0361422383613c79565b16604460208335926040519283809263758d9b8960e01b82528660048301523060248301525afa9081156134ac575f916149db575b50156149a4576060820161426c8184613e17565b80359061015e19813603018212156108225701936040840135946002861015610822578515905f828061498c575b8015614967575b15614922575f60206001600160a01b036142ba87613c79565b16600460405180948193634b36d70760e11b83525af19081156134ac575f916148e3575b506040516373bacc5b60e01b81526004810188905290602090829060249082906001600160a01b03165afa9081156134ac575f916148a9575b506001600160a01b031690811561486c576001600160a01b0361433986613c79565b1660808b01526108225760a089019790975260249660206001600160a01b0361436186613c79565b16604051998a809263e65e1c7960e01b82528a60048301525afa9788156134ac575f98614835575b506004919060206001600160a01b036143a187613c79565b16604051948580926366078bc360e11b82525afa80156134ac578a935f91614800575b5089851561478857614454610100959261444e61444861445b9460206305f5e10061443c8b608060e06144036143fd6060850185613e2c565b90613e61565b928d61442a61442f6144186040880188613ca5565b6001600160a01b039391369190613a7b565b615090565b1690520135910135613e90565b04970196808852613e90565b91613ec1565b90613ea3565b8251613ecf565b905260408a0152013560608801525b86516040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156134ac575f91614756575b50602088019081511161471157875161450191906020906001600160a01b03908116906144cf87613c79565b604051636eb1769f60e11b815230600482015291166001600160a01b0316602482015293849190829081906044820190565b03915afa9182156134ac575f926146dd575b50511161466d575b156145e257915f61454560209593614563979561453e60018060a01b0391613c79565b1694613e17565b604051630b0780b560e01b8152968795869485939060048501614074565b03925af19081156134ac575f916145b0575b5060c08201525b7fc130ad8ca47f1af0196f7d7cee7ae9753339d722f2f830f4d3f950c61835a59460e06040516145ac8185613ab1565ba190565b90506020813d6020116145da575b816145cb60209383613a3f565b8101031261082257515f614575565b3d91506145be565b915f6146006020959361461e979561453e60018060a01b0391613c79565b604051637d3cede160e11b8152968795869485939060048501614074565b03925af19081156134ac575f9161463b575b5060c082015261457c565b90506020813d602011614665575b8161465660209383613a3f565b8101031261082257515f614630565b3d9150614649565b86515f906020906001600160a01b039081169060449061468c87613c79565b16604051948593849263095ea7b360e01b84526004840152811960248401525af180156134ac576146be575b5061451b565b6146d69060203d6020116109a3576109948183613a3f565b505f6146b8565b9091506020813d602011614709575b816146f960209383613a3f565b810103126108225751905f614513565b3d91506146ec565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682062616c616e636520746f20697373756500000000006044820152606490fd5b90506020813d602011614780575b8161477160209383613a3f565b8101031261082257515f6144a3565b3d9150614764565b9061444e6144486147e29360606305f5e1006147d66147ad6143fd60808c018c613e2c565b61442a6147c06144186040840184613ca5565b1660408d015260806101008c0135910135613e90565b04980197808952613e90565b83519081039081116134f35760e0935289520135602088015261446a565b9350506020833d60201161482d575b8161481c60209383613a3f565b81010312610822578992515f6143c4565b3d915061480f565b919097506020823d602011614864575b8161485260209383613a3f565b81010312610822579051966004614389565b3d9150614845565b60405162461bcd60e51b815260206004820152601560248201527461737365742061646472657373206973207a65726f60581b6044820152606490fd5b90506020813d6020116148db575b816148c460209383613a3f565b81010312610822576148d590613c43565b5f614317565b3d91506148b7565b90506020813d60201161491a575b816148fe60209383613a3f565b81010312610822576020614913602492613c43565b91506142de565b3d91506148f1565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420737570706f7274206d756c7469706c6520746f6b656e7300000000006044820152606490fd5b50505f6001881480156142a1575060016149846080840184613e2c565b9050146142a1565b50600161499c6060840184613e2c565b90501461429a565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081c185c9d1a58da5c185b9d608a1b6044820152606490fd5b6149f4915060203d6020116109a3576109948183613a3f565b5f614258565b60405162461bcd60e51b81526020600482015260166024820152756973737565722061646472657373206973207a65726f60501b6044820152606490fd5b9190826040910312610822576020825192015190565b3560ff811681036108225790565b60443562ffffff811681036108225790565b3562ffffff811681036108225790565b60a4356001600160a01b03811681036108225790565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0808401519083015260c0808401519083015260e09283015116918101919091526101000190565b60405190614b6882613a23565b5f61010083614b75613de1565b81528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b15614bac57565b60405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682062616c616e636520746f20737761700000000000006044820152606490fd5b81810392915f1380158285131691841216176134f357565b90816101209103126108225760405190614c2282613a23565b80518252614c3260208201613c43565b6020830152614c4360408201613c43565b604083015260608101516060830152614c5e60808201613c43565b608083015260a081015160a083015260c0810151906004821015610822576101009160c084015260e081015160e0840152015161010082015290565b6001600160a01b03168015614cf8575f5160206153485f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206153485f395f51905f52546001600160a01b03163303614d2b57565b63118cdaa760e01b5f523360045260245ffd5b60405163a9059cbb60e01b60208281019182526001600160a01b039094166024830152604482019490945290925f91614d7a81606481016128e8565b519082855af1156134ac575f513d614dc157506001600160a01b0381163b155b614da15750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415614d9a565b335f9081527ff606e684ad9d4695315d4c1d83180a79ca1e5fc34d503cff501b8f4b9410207c602052604090205460ff1615614e0257565b63e2517d3f60e01b5f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b5f8181525f5160206153a85f395f51905f526020908152604080832033845290915290205460ff1615614e695750565b63e2517d3f60e01b5f523360045260245260445ffd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16614f29576001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b5f8181525f5160206153a85f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16614fcc575f8181525f5160206153a85f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181525f5160206153a85f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615614fcc575f8181525f5160206153a85f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b908151811015613e7c570160200190565b60ff16600a019060ff82116134f357565b602a8151036151a9576040516150a7604082613a3f565b60148152602080820192903684375f5b6014811061510c5750505190516bffffffffffffffffffffffff1981169190601482106150e7575b505060601c90565b6bffffffffffffffffffffffff1960149290920360031b82901b161690505f806150df565b8060011b818104600214821517156134f35780600201806002116134f357615149906001600160f81b031990615142908661506e565b51166151e7565b60041b90610ff060f08316921682036134f357600301806003116134f35761517b60ff916151428360f81b918761506e565b16019060ff82116134f35760019160f81b6001600160f81b0319165f1a6151a2828661506e565b53016150b7565b60405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840c2c8c8e4cae6e640d8cadccee8d60531b6044820152606490fd5b60f81c6030811015806152b3575b1561520957602f190160ff81116134f35790565b6061811015806152a8575b15615235576152229061507f565b60ff60601991160160ff81116134f35790565b60418110158061529d575b6152815760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103432bc1031b430b930b1ba32b960591b6044820152606490fd5b61528a9061507f565b60ff60401991160160ff81116134f35790565b506046811115615240565b506066811115615214565b5060398111156151f5565b60ff5f5160206153c85f395f51905f525460401c16156152da57565b631afcd79f60e31b5f5260045ffd5b9061530d57508051156152fe57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061533e575b61531e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561531656fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220eacba7446f956736a8dbccdfe4a4cb9479034f7a90967246365a8c86e025aafb64736f6c634300081c0033