0 txs
726 calls
constructor
constructor()
functions
hasOrderExpired
viewfunction hasOrderExpired(address account_) view returns (bool expired_)
maxExecutabilityAge
viewfunction maxExecutabilityAge() view returns (uint64)
MODULE_KEY
viewfunction MODULE_KEY() view returns (bytes32)
vault
viewfunction vault() view returns (address)
cancelExistingOrder
nonpayablefunction cancelExistingOrder(address account_)
cancelOrderByModule
nonpayablefunction cancelOrderByModule(address account_)
executeLimitOrder
payablefunction executeLimitOrder(uint256 tokenId_, bytes[] priceUpdateData_) payable
executeOrder
payablefunction executeOrder(address account_, bytes[] priceUpdateData_) payable
initialize
nonpayablefunction initialize(address vault_, uint64 maxExecutabilityAge_)
setMaxExecutabilityAge
nonpayablefunction setMaxExecutabilityAge(uint64 maxExecutabilityAge_)
setVault
nonpayablefunction setVault(address vault_)
events
Initialized
event Initialized(uint64 version)
LimitOrderExecuted
event LimitOrderExecuted(uint256 tokenId, uint8 executionType)
OrderCancelled
event OrderCancelled(address account, uint8 orderType)
OrderExecuted
event OrderExecuted(address account, uint8 orderType, uint256 keeperFee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ExecutableTimeNotReached
error ExecutableTimeNotReached(uint256 executableTime)
FailedInnerCall
error FailedInnerCall()
HighSlippage
error HighSlippage(uint256 supplied, uint256 accepted)
InvalidInitialization
error InvalidInitialization()
InvariantViolation
error InvariantViolation(string variableName)
LimitOrderPriceNotInRange
error LimitOrderPriceNotInRange(uint256 price, uint256 stopLossPrice, uint256 profitTakePrice)
ModuleKeyEmpty
error ModuleKeyEmpty()
NotEnoughMarginForFees
error NotEnoughMarginForFees(int256 marginAmount, uint256 feeAmount)
NotInitializing
error NotInitializing()
OnlyAuthorizedModule
error OnlyAuthorizedModule(address msgSender)
OnlyOwner
error OnlyOwner(address msgSender)
OrderHasExpired
error OrderHasExpired()
OrderHasNotExpired
error OrderHasNotExpired()
OrderInvalid
error OrderInvalid(address account)
Paused
error Paused(bytes32 moduleKey)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress(string variableName)
ZeroValue
error ZeroValue(string variableName)
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614627806100d96000396000f3fe6080604052600436106100ac5760003560e01c80633d23b9ca1161007457806391be604b1161004e57806391be604b146101ca578063e0143969146101ea578063fbfa77cf1461020a57600080fd5b80633d23b9ca14610173578063414ca093146101975780636817031b146101aa57600080fd5b806303bb4f69146100b15780631798de81146100d35780631ab1532b146100f357806326e7dfe9146101305780633a7b1c2114610160575b600080fd5b3480156100bd57600080fd5b506100d16100cc366004613ccc565b610242565b005b3480156100df57600080fd5b506100d16100ee366004613cfe565b6102ec565b3480156100ff57600080fd5b50603254610113906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561013c57600080fd5b5061015061014b366004613ccc565b610441565b6040519015158152602001610127565b6100d161016e366004613d82565b6104dc565b34801561017f57600080fd5b5061018960005481565b604051908152602001610127565b6100d16101a5366004613dd6565b610ba9565b3480156101b657600080fd5b506100d16101c5366004613ccc565b611083565b3480156101d657600080fd5b506100d16101e5366004613e08565b611187565b3480156101f657600080fd5b506100d1610205366004613ccc565b611226565b34801561021657600080fd5b5060015461022a906001600160a01b031681565b6040516001600160a01b039091168152602001610127565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae9190613e25565b15156000036102d757604051633b9e98fd60e11b81523360048201526024015b60405180910390fd5b6102e9816102e4836112a2565b6113c8565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03166000811580156103365750825b90506000826001600160401b031660011480156103525750303b155b905081158015610360575080155b1561037e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103b257845468ff00000000000000001916680100000000000000001785555b6103dc7f6f72646572457865637574696f6e4d6f64756c65000000000000000000000000886117a1565b6103e4611832565b6103ed86611844565b831561043857845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b60008061044d836112a2565b604001516001600160401b03169050600081116104ad5760405163046c82ad60e41b815260206004820152601060248201527f65786563757461626c65417454696d650000000000000000000000000000000060448201526064016102ce565b60325442906104c5906001600160401b031683613e5d565b10156104d25760016104d5565b60005b9392505050565b6104e46118c1565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916105199160040190815260200190565b602060405180830381865afa158015610536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055a9190613e25565b1561057e57600054604051630cb09dc760e01b81526004016102ce91815260200190565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526001600160a01b0390911690339084908490849063aa10e9f090602401602060405180830381865afa1580156105dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106019190613e70565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b815260040161063193929190613eb6565b6000604051808303818588803b15801561064a57600080fd5b505af115801561065e573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b0390911693506000925083915063aa10e9f090602401602060405180830381865afa1580156106bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e39190613e70565b9050600060405180604001604052806106fb8561190b565b8152602001836001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190613f69565b9052905060006107718b6112a2565b905060008151600681111561078857610788613f82565b036107b1576040516301bed84360e41b81526001600160a01b038c1660048201526024016102ce565b6107c88b82604001516001600160401b0316611b17565b600154604051630aa10e9f60e41b81526f636f6e74726f6c6c65724d6f64756c6560801b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108479190613e70565b6001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b5060019250610908915050565b8151600681111561091b5761091b613f82565b0361092f5761092a8b82611c57565b6109bf565b60028151600681111561094457610944613f82565b036109535761092a8b82611e7b565b60038151600681111561096857610968613f82565b036109775761092a8b826122b7565b60048151600681111561098c5761098c613f82565b0361099b5761092a8b8261276e565b6005815160068111156109b0576109b0613f82565b036109bf576109bf8b82612b89565b805160208201516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce37926109f5928f92613fac565b60405180910390a15060006040518060400160405280610a148661190b565b8152602001846001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b9190613f69565b81525090506000846001600160a01b03166396528df06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae49190613f69565b83518351919250610af5918361325e565b610b69846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a9190613f69565b846020015184602001516132c2565b610b7285613362565b505050505050505050610ba460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b610bb16118c1565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91610be69160040190815260200190565b602060405180830381865afa158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c279190613e25565b15610c4b57600054604051630cb09dc760e01b81526004016102ce91815260200190565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526001600160a01b0390911690339084908490849063aa10e9f090602401602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190613e70565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b8152600401610cfe93929190613eb6565b6000604051808303818588803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b0390911693506000925083915063aa10e9f090602401602060405180830381865afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190613e70565b905060006040518060400160405280610dc88561190b565b8152602001836001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190613f69565b9052600154604051630aa10e9f60e41b81526f636f6e74726f6c6c65724d6f64756c6560801b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190613e70565b6001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b158015610f5157600080fd5b505afa158015610f65573d6000803e3d6000fd5b505050506000610f748b61343f565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015291925061106c916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190613e70565b6001600160a01b0316636352211e8d6040518263ffffffff1660e01b815260040161102591815260200190565b602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190613e70565b8261276e565b5060006040518060400160405280610a148661190b565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190613e70565b6001600160a01b03161461111957604051630543601560e11b81523360048201526024016102ce565b6001600160a01b0381166111585760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016102ce565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190613e70565b6001600160a01b03161461121d57604051630543601560e11b81523360048201526024016102ce565b6102e981611844565b6000611231826112a2565b905060008151600681111561124857611248613f82565b03611251575050565b603254604082015161126c916001600160401b031690613fd7565b6001600160401b031642116112945760405163f31e62b160e01b815260040160405180910390fd5b61129e82826113c8565b5050565b6112cc60408051608081019091528060008152600060208201819052604082015260609081015290565b600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113529190613e70565b6040516301edb60d60e61b81526001600160a01b0384811660048301529190911690637b6d834090602401600060405180830381865afa15801561139a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113c291908101906140cc565b92915050565b600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190613e70565b6040516346c8f1c760e11b81526001600160a01b0384811660048301529190911690638d91e38e90602401600060405180830381600087803b15801561149357600080fd5b505af11580156114a7573d6000803e3d6000fd5b50600192506114b4915050565b815160068111156114c7576114c7613f82565b0361158d57600081606001518060200190518101906114e691906141ca565b905061158783836020015183600001516115009190613e5d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015611553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115779190613e70565b6001600160a01b03169190613a90565b50611762565b6002815160068111156115a2576115a2613f82565b036116a857600081606001518060200190518101906115c1919061420e565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163d9190613e70565b8151604051637eee288d60e01b81526001600160a01b0386811660048301526024820192909252911690637eee288d90604401600060405180830381600087803b15801561168a57600080fd5b505af115801561169e573d6000803e3d6000fd5b5050505050611762565b6003815160068111156116bd576116bd613f82565b0361170557600081606001518060200190518101906116dc919061425e565b9050611587838260a00151836000015185602001516116fb9190613e5d565b6115009190613e5d565b60058151600681111561171a5761171a613f82565b03611762576000816060015180602001905181019061173991906142d1565b905060008160200151131561176057611760838260a0015183602001516115009190613e5d565b505b80516040517f4a6b5a554fec07280a14030b5fe290efc3254f7a1448f2e4d1a687ad5e4904fd916117959185919061434e565b60405180910390a15050565b816117bf5760405163673791e360e11b815260040160405180910390fd5b6001600160a01b0381166117fe5760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016102ce565b6000919091556001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b61183a613af7565b611842613b45565b565b806001600160401b031660000361189e5760405163046c82ad60e41b815260206004820152601360248201527f6d61784578656375746162696c6974794167650000000000000000000000000060448201526064016102ce565b6032805467ffffffffffffffff19166001600160401b0392909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161190557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080826001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119709190613e70565b6040516370a0823160e01b81526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc9190613f69565b90506000836001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a42919061436b565b60000151846001600160a01b03166385820ba36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa89190613f69565b611ab291906143a8565b905080821215611b055760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e65743100000000000000000000000000000000000060448201526064016102ce565b611b0f81836143d0565b949350505050565b603254611b2d906001600160401b031682613e5d565b421115611b4c5760405162bcf1ab60e61b815260040160405180910390fd5b80421015611b705760405163d0878a9360e01b8152600481018290526024016102ce565b600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf69190613e70565b6040516346c8f1c760e11b81526001600160a01b0384811660048301529190911690638d91e38e90602401600060405180830381600087803b158015611c3b57600080fd5b505af1158015611c4f573d6000803e3d6000fd5b505050505050565b60008160600151806020019051810190611c7191906141ca565b6001548151604051630b85d2d960e11b815260048101919091529192506001600160a01b03169063170ba5b29060240160006040518083038186803b158015611cb957600080fd5b505afa158015611ccd573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b03909116925063aa10e9f09150602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c9190613e70565b60408084015181516360a4f35760e11b81526001600160a01b0387811660048301526001600160401b03909216602482015284516044820152602085015160648201529184015181166084830152919091169063c149e6ae9060a401600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050506020828101516001546040805163d8dfeb4560e01b81529051611e2a943394936001600160a01b03169263d8dfeb4592600480830193928290030181865afa158015611553573d6000803e3d6000fd5b60015481516040805163d8dfeb4560e01b81529051610ba4936001600160a01b03169291839163d8dfeb45916004808201926020929091908290030181865afa158015611553573d6000803e3d6000fd5b60008160600151806020019051810190611e95919061420e565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015611ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f169190613e70565b604080860151905163c110587560e01b81526001600160a01b0388811660048301526001600160401b039092166024820152855160448201526020860151606482015291169063c11058759060840160408051808303816000875af1158015611f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa791906143f7565b915091506000818560200151611fbd9190613e5d565b905080831015611fea57604051630c46115560e31b815260048101849052602481018290526044016102ce565b611ff4818461441b565b9250836020015183101561202b57602084015160405163437879d160e01b81526102ce918591600401918252602082015260400190565b600154604051630f0245ad60e01b8152600481018490526000916001600160a01b031690630f0245ad90602401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190613f69565b6001549091506001600160a01b03166337f3e0d26120b7838661441b565b6040518263ffffffff1660e01b81526004016120d591815260200190565b600060405180830381600087803b1580156120ef57600080fd5b505af1158015612103573d6000803e3d6000fd5b50506001546040805163326f824f60e11b815290516001600160a01b0390921693506362502169925083916364df049e916004808201926020929091908290030181865afa158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d9190613e70565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b50506001546020890151604051636250216960e01b815233600482015260248101919091526001600160a01b03909116925063625021699150604401600060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b5050600154604051636250216960e01b81526001600160a01b038b81166004830152602482018990529091169250636250216991506044015b600060405180830381600087803b15801561229657600080fd5b505af11580156122aa573d6000803e3d6000fd5b5050505050505050505050565b600081606001518060200190518101906122d1919061425e565b60015460a0820151604051630f0245ad60e01b81529293506000926001600160a01b0390921691630f0245ad9161230e9160040190815260200190565b602060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234f9190613f69565b90506000818360a00151612363919061441b565b6001546020850151604051630ce8fe6160e01b81526004810191909152602481018390529192506001600160a01b031690630ce8fe619060440160006040518083038186803b1580156123b557600080fd5b505afa1580156123c9573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b6004820152600093506001600160a01b03909116915063aa10e9f090602401602060405180830381865afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d9190613e70565b6001600160a01b03166377d5b2b587876040518363ffffffff1660e01b815260040161247a929190614492565b6020604051808303816000875af1158015612499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bd9190613f69565b90506000846060015111806124d757506000198460800151105b156125df57600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190613e70565b606085015160808601516040516375a3eb2560e11b8152600481018590526001600160a01b038a811660248301526044820193909352606481019190915291169063eb47d64a90608401600060405180830381600087803b1580156125c657600080fd5b505af11580156125da573d6000803e3d6000fd5b505050505b600154604051631bf9f06960e11b8152600481018490526001600160a01b03909116906337f3e0d290602401600060405180830381600087803b15801561262557600080fd5b505af1158015612639573d6000803e3d6000fd5b50505050612700600160009054906101000a90046001600160a01b03166001600160a01b03166364df049e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b79190613e70565b6001546040805163d8dfeb4560e01b8152905187926001600160a01b03169163d8dfeb459160048083019260209291908290030181865afa158015611553573d6000803e3d6000fd5b600154845161271e916001600160a01b031690611500908590613e5d565b6020808601516001546040805163d8dfeb4560e01b81529051611c4f943394936001600160a01b03169263d8dfeb4592600480830193928290030181865afa158015611553573d6000803e3d6000fd5b6000816060015180602001905181019061278891906144ce565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa1580156127e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280b9190613e70565b6001546040808501519051630f0245ad60e01b81529293506000926001600160a01b0390921691630f0245ad916128489160040190815260200190565b602060405180830381865afa158015612865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128899190613f69565b9050600081846040015161289d919061441b565b84516040516331a9108f60e11b81529192506001600160a01b03851691636352211e916128d09160040190815260200190565b602060405180830381865afa1580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129119190613e70565b506040516359beb9d160e01b81526000906001600160a01b038516906359beb9d1906129419089906004016144ea565b6020604051808303816000875af1158015612960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129849190613f69565b600154604051631bf9f06960e11b8152600481018590529192506001600160a01b0316906337f3e0d290602401600060405180830381600087803b1580156129cb57600080fd5b505af11580156129df573d6000803e3d6000fd5b50506001546040805163326f824f60e11b815290516001600160a01b0390921693506362502169925083916364df049e916004808201926020929091908290030181865afa158015612a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a599190613e70565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401600060405180830381600087803b158015612aa157600080fd5b505af1158015612ab5573d6000803e3d6000fd5b50506001546020890151604051636250216960e01b815233600482015260248101919091526001600160a01b03909116925063625021699150604401600060405180830381600087803b158015612b0b57600080fd5b505af1158015612b1f573d6000803e3d6000fd5b5050600154602089015160408901516001600160a01b039092169350636250216992508a91612b4e908661441b565b612b58919061441b565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260440161227c565b60008160600151806020019051810190612ba391906142d1565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015612c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c269190613e70565b82516040516331a9108f60e11b81529192506001600160a01b03831691636352211e91612c599160040190815260200190565b602060405180830381865afa158015612c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9a9190613e70565b506001546080830151604051630f0245ad60e01b815260048101919091526000916001600160a01b031690630f0245ad90602401602060405180830381865afa158015612ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0f9190613f69565b90506000818460800151612d23919061441b565b9050600084604001511315612da1576001546040808601519051630ce8fe6160e01b81526001600160a01b0390921691630ce8fe6191612d70918590600401918252602082015260400190565b60006040518083038186803b158015612d8857600080fd5b505afa158015612d9c573d6000803e3d6000fd5b505050505b600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015612e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e279190613e70565b845160405163018dc31960e41b81526001600160a01b0392909216916318dc319091612e599160040190815260200190565b600060405180830381600087803b158015612e7357600080fd5b505af1158015612e87573d6000803e3d6000fd5b505060405163692dfde960e11b81526001600160a01b038616925063d25bfbd29150612eb79088906004016144ea565b600060405180830381600087803b158015612ed157600080fd5b505af1158015612ee5573d6000803e3d6000fd5b5050600154604051631bf9f06960e11b8152600481018590526001600160a01b0390911692506337f3e0d29150602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50505050600084602001511315613082576001546040805163326f824f60e11b8152905161300c926001600160a01b0316916364df049e9160048083019260209291908290030181865afa158015612f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc39190613e70565b6001546040805163d8dfeb4560e01b8152905186926001600160a01b03169163d8dfeb459160048083019260209291908290030181865afa158015611553573d6000803e3d6000fd5b600154602085015161302d916001600160a01b031690611500908490613e5d565b6020808601516001546040805163d8dfeb4560e01b8152905161307d943394936001600160a01b03169263d8dfeb4592600480830193928290030181865afa158015611553573d6000803e3d6000fd5b611c4f565b6000846020015112156131165760015460208501516001600160a01b039091169063625021699088906130b7906000196144fd565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156130fd57600080fd5b505af1158015613111573d6000803e3d6000fd5b505050505b6001546020860151604051636250216960e01b815233600482015260248101919091526001600160a01b0390911690636250216990604401600060405180830381600087803b15801561316857600080fd5b505af115801561317c573d6000803e3d6000fd5b50506001546040805163326f824f60e11b815290516001600160a01b0390921693506362502169925083916364df049e916004808201926020929091908290030181865afa1580156131d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f69190613e70565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561323e57600080fd5b505af1158015613252573d6000803e3d6000fd5b50505050505050505050565b81831380613274575061327181846143a8565b82135b15610ba45760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e65743200000000000000000000000000000000000060448201526064016102ce565b6000831180156132d157508181105b15610ba45760006132e2828461441b565b90506000836132f983670de0b6b3a764000061452d565b6133039190614544565b905064e8d4a5100081111561335b5760405163015cf55b60e31b815260206004820152601860248201527f737461626c65436f6c6c61746572616c5065725368617265000000000000000060448201526064016102ce565b5050505050565b6000816001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa1580156133a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c6919061436b565b6020015110156102e95760405163015cf55b60e31b815260206004820152601f60248201527f676c6f62616c41766572616765507269636549734e6f744e656761746976650060448201526064016102ce565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61346960408051608081019091528060008152600060208201819052604082015260609081015290565b600154604051630aa10e9f60e41b8152766f72646572416e6e6f756e63656d656e744d6f64756c6560481b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156134cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f09190613e70565b604051632983081360e11b8152600481018590529091506001600160a01b03821690635306102690602401600060405180830381865afa158015613538573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261356091908101906140cc565b915060068251600681111561357757613577613f82565b146135a0576040516301bed84360e41b81526001600160a01b03841660048201526024016102ce565b600082606001518060200190518101906135ba91906144ce565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363b9190613e70565b6001600160a01b031663529b128c600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190613e70565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152620151806024820152600160448201526064016040805180830381865afa158015613713573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373791906143f7565b50905083604001516001600160401b031642101561377957604080850151905163d0878a9360e01b81526001600160401b0390911660048201526024016102ce565b60008260200151821161378e575060006137d7565b826040015182106137a4575060408201516137d7565b60208301516040808501519051630715b04f60e31b815260048101859052602481019290925260448201526064016102ce565b6040805160608101825287815260208101839052600154825163eb02c30160e01b8152600481018a905291928301916001600160a01b0390911690639eb3386290829063eb02c30190602401608060405180830381865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138649190614566565b604001516040518263ffffffff1660e01b815260040161388691815260200190565b602060405180830381865afa1580156138a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c79190613f69565b905260408051825160208083019190915283015181830152910151606082015260800160408051808303601f1901815291815260608701919091526001549051630aa10e9f60e41b8152686b656570657246656560b81b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139799190613e70565b6001600160a01b031663354662e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139da9190613f69565b602086015260405163742cf9b960e11b8152600481018790526001600160a01b0385169063e859f37290602401600060405180830381600087803b158015613a2157600080fd5b505af1158015613a35573d6000803e3d6000fd5b505050507fcc974100ba66f63936b85bc2ef70bf92daf120eb6b2e8dbed73b51c1507f5554868460200151841115613a6e576002613a71565b60015b604051613a7f9291906145b1565b60405180910390a150505050919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610ba4908490613b4d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661184257604051631afcd79f60e31b815260040160405180910390fd5b613419613af7565b6000613b626001600160a01b03841683613bb0565b90508051600014158015613b87575080806020019051810190613b859190613e25565b155b15610ba457604051635274afe760e01b81526001600160a01b03841660048201526024016102ce565b60606104d58383600084600080856001600160a01b03168486604051613bd691906145d5565b60006040518083038185875af1925050503d8060008114613c13576040519150601f19603f3d011682016040523d82523d6000602084013e613c18565b606091505b5091509150613c28868383613c32565b9695505050505050565b606082613c4757613c4282613c8e565b6104d5565b8151158015613c5e57506001600160a01b0384163b155b15613c8757604051639996b31560e01b81526001600160a01b03851660048201526024016102ce565b50806104d5565b805115613c9e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146102e957600080fd5b600060208284031215613cde57600080fd5b81356104d581613cb7565b6001600160401b03811681146102e957600080fd5b60008060408385031215613d1157600080fd5b8235613d1c81613cb7565b91506020830135613d2c81613ce9565b809150509250929050565b60008083601f840112613d4957600080fd5b5081356001600160401b03811115613d6057600080fd5b6020830191508360208260051b8501011115613d7b57600080fd5b9250929050565b600080600060408486031215613d9757600080fd5b8335613da281613cb7565b925060208401356001600160401b03811115613dbd57600080fd5b613dc986828701613d37565b9497909650939450505050565b600080600060408486031215613deb57600080fd5b8335925060208401356001600160401b03811115613dbd57600080fd5b600060208284031215613e1a57600080fd5b81356104d581613ce9565b600060208284031215613e3757600080fd5b815180151581146104d557600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156113c2576113c2613e47565b600060208284031215613e8257600080fd5b81516104d581613cb7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052810182905260006060600584901b830181019083018583601e1936839003015b87821015613f5b57868503605f190184528235818112613f0a57600080fd5b89016020810190356001600160401b03811115613f2657600080fd5b803603821315613f3557600080fd5b613f40878284613e8d565b96505050602083019250602084019350600182019150613eeb565b509298975050505050505050565b600060208284031215613f7b57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60078110613fa857613fa8613f82565b9052565b6001600160a01b038416815260608101613fc96020830185613f98565b826040830152949350505050565b6001600160401b0381811683821601908111156113c2576113c2613e47565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561402e5761402e613ff6565b60405290565b604051606081016001600160401b038111828210171561402e5761402e613ff6565b60405160e081016001600160401b038111828210171561402e5761402e613ff6565b604051601f8201601f191681016001600160401b03811182821017156140a0576140a0613ff6565b604052919050565b60005b838110156140c35781810151838201526020016140ab565b50506000910152565b6000602082840312156140de57600080fd5b81516001600160401b038111156140f457600080fd5b82016080818503121561410657600080fd5b61410e61400c565b81516007811061411d57600080fd5b815260208281015190820152604082015161413781613ce9565b604082015260608201516001600160401b0381111561415557600080fd5b80830192505084601f83011261416a57600080fd5b81516001600160401b0381111561418357614183613ff6565b614196601f8201601f1916602001614078565b8181528660208386010111156141ab57600080fd5b6141bc8260208301602087016140a8565b606083015250949350505050565b600060608284031280156141dd57600080fd5b506141e6614034565b8251815260208084015190820152604083015161420281613cb7565b60408201529392505050565b6000604082840312801561422157600080fd5b50604080519081016001600160401b038111828210171561424457614244613ff6565b604052825181526020928301519281019290925250919050565b600060e082840312801561427157600080fd5b50600061427c614056565b835181526020808501519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c084015191506142c282613cb7565b60c08101919091529392505050565b600060c08284031280156142e457600080fd5b5060405160009060c081016001600160401b038111828210171561430a5761430a613ff6565b604090815284518252602080860151908301528481015190820152606080850151908201526080808501519082015260a09384015193810193909352509092915050565b6001600160a01b0383168152604081016104d56020830184613f98565b6000606082840312801561437e57600080fd5b50614387614034565b82518152602080840151908201526040928301519281019290925250919050565b80820182811260008312801582168215821617156143c8576143c8613e47565b505092915050565b81810360008312801583831316838312821617156143f0576143f0613e47565b5092915050565b6000806040838503121561440a57600080fd5b505080516020909101519092909150565b818103818111156113c2576113c2613e47565b614439828251613f98565b602081015160208301526001600160401b0360408201511660408301526000606082015160806060850152805180608086015261447d8160a08701602085016140a8565b601f01601f19169390930160a0019392505050565b6001600160a01b0383168152604060208201526000611b0f604083018461442e565b6000606082840312156144c657600080fd5b614387614034565b6000606082840312156144e057600080fd5b6104d583836144b4565b6020815260006104d5602083018461442e565b80820260008212600160ff1b8414161561451957614519613e47565b81810583148215176113c2576113c2613e47565b80820281158282048414176113c2576113c2613e47565b60008261456157634e487b7160e01b600052601260045260246000fd5b500490565b6000608082840312801561457957600080fd5b50600061458461400c565b83518152602080850151908201526040808501519082015260609384015193810193909352509092915050565b82815260408101600383106145c8576145c8613f82565b8260208301529392505050565b600082516145e78184602087016140a8565b919091019291505056fea2646970667358221220dfcc23b0f35352cc72913f1b144949a4de3d01688d935010e3d532cbf1777a9064736f6c634300081c0033