0 txs
2 calls
constructor
constructor()
functions
GIT_COMMIT
viewfunction GIT_COMMIT() view returns (string)
GIT_TAG
viewfunction GIT_TAG() view returns (string)
isEnabled
viewfunction isEnabled(address vault) view returns (bool)
isPaused
viewfunction isPaused(bytes4 sig) view returns (bool)
isPausedGlobally
viewfunction isPausedGlobally() view returns (bool)
MAX_CLAIM_SIZE
viewfunction MAX_CLAIM_SIZE() view returns (uint32)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
previewClaim
viewfunction previewClaim(address receiver, address vault) view returns (uint256, uint256)
previewSync
viewfunction previewSync(address vault, uint256 requestCount) view returns (uint256, uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
queueIndex
viewfunction queueIndex(address vault, address recipient) view returns (tuple)
queueIndexItem
viewfunction queueIndexItem(address vault, address recipient, uint32 index) view returns (tuple)
queueInfo
viewfunction queueInfo(address vault) view returns (tuple)
queueItem
viewfunction queueItem(address vault, uint256 index) view returns (tuple)
queueSyncLog
viewfunction queueSyncLog(address vault, uint256 index) view returns (tuple)
reclaimPeriod
viewfunction reclaimPeriod(address vault) view returns (uint256)
resolver
viewfunction resolver() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
claim
nonpayablefunction claim(address receiver, address vault) returns (uint256, uint256)
enableQueue
nonpayablefunction enableQueue(address vault)
initialize
nonpayablefunction initialize(address owner_, address resolver_)
pause
nonpayablefunction pause()
pause
nonpayablefunction pause(bytes4 sig)
renounceOwnership
nonpayablefunction renounceOwnership()
request
nonpayablefunction request(uint256 shares, address receiver, address vault) returns (uint256)
requestWithExtraData
nonpayablefunction requestWithExtraData(uint256 shares, address receiver, address vault, bytes extraData) returns (uint256)
setReclaimPeriod
nonpayablefunction setReclaimPeriod(address vault, uint256 reclaimPeriod_)
setResolver
nonpayablefunction setResolver(address resolver_)
sync
nonpayablefunction sync(address executor, address vault, uint256 requestCount) returns (uint256, uint256)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unpause
nonpayablefunction unpause(bytes4 sig)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Claimed
event Claimed(address indexed receiver, address indexed vault, uint256 reqId, uint256 shares, uint256 assets, uint256 totalSupply, uint256 totalAssets, uint256 syncLogIndex)
ClaimSucceeded
event ClaimSucceeded(address indexed receiver, address indexed vault, (uint32 reqIdFrom, uint32 reqIdTo, uint256 totalSharesClaimed, uint256 totalAssetsClaimed) result)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
QueueEnabled
event QueueEnabled(address indexed vault)
ReclaimPeriodSet
event ReclaimPeriodSet(address indexed vault, uint256 reclaimPeriod)
Requested
event Requested(address indexed receiver, address indexed vault, uint256 reqId, uint256 shares, uint256 assets)
RequestedWithExtraData
event RequestedWithExtraData(address indexed receiver, address indexed vault, uint256 reqId, uint256 shares, uint256 assets, bytes extraData)
ResolverSet
event ResolverSet(address indexed resolver)
Synced
event Synced(address indexed executor, address indexed vault, (uint256 logIndex, uint32 reqIdFrom, uint32 reqIdTo, uint256 totalSupply, uint256 totalAssets, uint256 totalSharesSynced, uint256 totalAssetsOnReserve, uint256 totalAssetsOnRequest) result)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
IReclaimQueue__Empty
error IReclaimQueue__Empty()
IReclaimQueue__NothingToClaim
error IReclaimQueue__NothingToClaim()
IReclaimQueue__NothingToSync
error IReclaimQueue__NothingToSync()
IReclaimQueue__OutOfBounds
error IReclaimQueue__OutOfBounds(uint256 max, uint256 actual)
IReclaimQueue__QueueNotEnabled
error IReclaimQueue__QueueNotEnabled(address vault)
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
Pausable__NotPaused
error Pausable__NotPaused(bytes4 sig)
Pausable__Paused
error Pausable__Paused(bytes4 sig)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x601860e0527f6d69746f7369732e73746f726167652e5061757361626c650000000000000000610100527f582977cdeb9b6be2e2a29b3d4fca6da72f5834abc9644d4ffc634612bd49c0006080523060a052610160604052601f610120527f6d69746f7369732e73746f726167652e5265636c61696d51756575652e763100610140527fc0dfb6960d0417d4a08672456d5c034fc2f1b2d4182724d00f36ac732f4645ba5f527f9322d842d6ab75d7b98f987ed55b5dedecace99deb71f7703dde41b7b05b540060c0523480156100d4575f5ffd5b5060015f556100e16100e6565b610198565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101365760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101955780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805160a05160c051613f5561026a5f395f81816104d3015281816107aa01528181610806015281816108b201528181610aff01528181610caf01528181610d2601528181610f1801528181610fdf01528181611105015281816112a1015281816113e201528181611523015281816118420152818161189f0152818161192b0152611de201525f8181611ed201528181611efb015261202f01525f818161137601528181611a5601528181611c5f01528181611cb101528181611d9e0152818161241601526128af0152613f555ff3fe6080604052600436106101fc575f3560e01c80638da5cb5b11610113578063b175eb4d1161009d578063e30c39781161006d578063e30c39781461072f578063e7e2824d14610743578063e9d43b6014610762578063f2fa935114610781578063f2fde38b146107e4575f5ffd5b8063b175eb4d146106ac578063b8a15e3a146106dd578063bac1e94b146106f1578063d0cca80c14610710575f5ffd5b8063918b8e89116100e3578063918b8e891461054957806393a9ec75146105a35780639c1df823146105b7578063a28caf4f14610650578063ad3cb1cc1461066f575f5ffd5b80638da5cb5b146104945780639015d371146104a857806390474d8f1461050157806390e2f8d61461052a575f5ffd5b80634f1ef286116101945780636c65abc1116101645780636c65abc1146103bd578063715018a6146103dc57806379ba5097146103f05780638456cb5914610404578063851a42b214610418575f5ffd5b80634f1ef2861461034a57806352d1902d1461035d578063562ebb411461037f5780636070a9c81461039e575f5ffd5b80633aa83ec7116101cf5780633aa83ec7146102d75780633f4ba83a146102f8578063485cc9551461030c5780634e543b261461032b575f5ffd5b806304f3bcec1461020057806309b65e661461023157806321c0b34214610260578063346e216614610294575b5f5ffd5b34801561020b575f5ffd5b50610214610803565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023c575f5ffd5b5061025061024b3660046138eb565b610835565b6040519015158152602001610228565b34801561026b575f5ffd5b5061027f61027a366004613926565b610845565b60408051928352602083019190915201610228565b34801561029f575f5ffd5b506102b36102ae366004613926565b610adb565b60408051825163ffffffff9081168252602093840151169281019290925201610228565b3480156102e2575f5ffd5b506102f66102f13660046138eb565b610b69565b005b348015610303575f5ffd5b506102f6610b7e565b348015610317575f5ffd5b506102f6610326366004613926565b610b91565b348015610336575f5ffd5b506102f661034536600461395d565b610ca2565b6102f661035836600461398c565b610cd4565b348015610368575f5ffd5b50610371610cf3565b604051908152602001610228565b34801561038a575f5ffd5b5061027f610399366004613926565b610d21565b3480156103a9575f5ffd5b506103716103b8366004613a52565b610e32565b3480156103c8575f5ffd5b506102f66103d7366004613aeb565b610f0b565b3480156103e7575f5ffd5b506102f6610f3e565b3480156103fb575f5ffd5b506102f6610f4f565b34801561040f575f5ffd5b506102f6610f94565b348015610423575f5ffd5b5061043761043236600461395d565b610fa5565b60405161022891905f60a08201905082511515825265ffffffffffff602084015116602083015263ffffffff604084015116604083015263ffffffff606084015116606083015263ffffffff608084015116608083015292915050565b34801561049f575f5ffd5b50610214611080565b3480156104b3575f5ffd5b506102506104c236600461395d565b6001600160a01b03165f90815260017f000000000000000000000000000000000000000000000000000000000000000001602052604090205460ff1690565b34801561050c575f5ffd5b50610515606481565b60405163ffffffff9091168152602001610228565b348015610535575f5ffd5b5061027f610544366004613b15565b6110b4565b348015610554575f5ffd5b50610568610563366004613b53565b611274565b60408051825165ffffffffffff1681526020808401516001600160d01b03908116918301919091529282015190921690820152606001610228565b3480156105ae575f5ffd5b50610250611370565b3480156105c2575f5ffd5b506105d66105d1366004613aeb565b6113a1565b60405161022891905f60c08201905065ffffffffffff835116825263ffffffff602084015116602083015263ffffffff60408401511660408301526001600160901b0360608401511660608301526001600160801b0360808401511660808301526001600160801b0360a08401511660a083015292915050565b34801561065b575f5ffd5b5061037161066a366004613ba3565b6114c3565b34801561067a575f5ffd5b5061069f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102289190613bd7565b3480156106b7575f5ffd5b5061069f604051806040016040528060068152602001653b181719971960d11b81525081565b3480156106e8575f5ffd5b5061069f611807565b3480156106fc575f5ffd5b506102f661070b3660046138eb565b611823565b34801561071b575f5ffd5b506102f661072a36600461395d565b611835565b34801561073a575f5ffd5b50610214611867565b34801561074e575f5ffd5b5061027f61075d366004613aeb565b61188f565b34801561076d575f5ffd5b5061056861077c366004613aeb565b6118ff565b34801561078c575f5ffd5b5061037161079b36600461395d565b6001600160a01b03165f9081527f00000000000000000000000000000000000000000000000000000000000000006001016020526040902054610100900465ffffffffffff1690565b3480156107ef575f5ffd5b506102f66107fe36600461395d565b6119cf565b5f7f00000000000000000000000000000000000000000000000000000000000000005b546001600160a01b0316919050565b5f61083f82611a54565b92915050565b5f5f61084f611aa8565b6108635f356001600160e01b031916611a54565b155f356001600160e01b031916906108a057604051633dba50a160e11b81526001600160e01b031990911660048201526024015b60405180910390fd5b506001600160a01b038381165f9081527f0000000000000000000000000000000000000000000000000000000000000000600181016020908152604080842094891684526003850190915282209092916108f982611ad0565b8354909150879060ff1661092c5760405163b8fcaf8d60e01b81526001600160a01b039091166004820152602401610897565b508063ffffffff165f036109535760405163f0e1ed6360e01b815260040160405180910390fd5b8063ffffffff16610968835463ffffffff1690565b63ffffffff161061098c5760405163f0e1ed6360e01b815260040160405180910390fd5b5050505f61099b828787611ae0565b90505f8160600151116109c15760405163f0e1ed6360e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03167f1d03f828aeda7d7f47dbd3347fd7f2edd4d7f0995403d1ecc311e459981b923383604051610a3a91905f60808201905063ffffffff835116825263ffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b60405180910390a3610abb868260600151876001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aab9190613c0c565b6001600160a01b03169190611bef565b80604001518160600151935093505050610ad460015f55565b9250929050565b6040805180820182525f80825260208083018290526001600160a01b0386811683527f000000000000000000000000000000000000000000000000000000000000000060010182528483209086168352600381018252918490208451808601909552805463ffffffff1685529293919291908101610b5883611ad0565b63ffffffff16905295945050505050565b610b7233611c53565b610b7b81611c5b565b50565b610b8733611c53565b610b8f611cae565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610bd65750825b90505f8267ffffffffffffffff166001148015610bf25750303b155b905081158015610c00575080155b15610c1e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4857845460ff60401b1916600160401b1785555b610c528787611ce2565b8315610c9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610caa611e4e565b610b7b7f000000000000000000000000000000000000000000000000000000000000000082611e80565b610cdc611ec7565b610ce582611c53565b610cef8282611f55565b5050565b5f610cfc612024565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b5f80807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038086165f9081526001830160209081526040808320938a16835260039093019052908120919250610d82825463ffffffff1690565b90505f610db5610db0610d96606485613c3b565b63ffffffff16610da586611ad0565b63ffffffff1661206d565b61207c565b6001600160a01b0388165f8181526001870160209081526040808320815160808101835263ffffffff808a1682528716818501528083018590526060810185905294845260028a019092528220549394509092610e1792908c9060ff166120b0565b6040810151606090910151909a909950975050505050505050565b60405163266d6a8360e11b8152600481018690525f9081906001600160a01b03861690634cdad50690602401602060405180830381865afa158015610e79573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9d9190613c57565b90505f610eab8888886114c3565b9050856001600160a01b0316876001600160a01b03167ffb5520a3536b5f8df295f9966ee35841f86181ecf59a8e346050756979a574f4838b868a8a604051610ef8959493929190613c6e565b60405180910390a3979650505050505050565b610f13611e4e565b610cef7f0000000000000000000000000000000000000000000000000000000000000000838361230b565b610f46611e4e565b610b8f5f6123da565b3380610f59611867565b6001600160a01b031614610f8b5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610897565b610b7b816123da565b610f9d33611c53565b610b8f612412565b6040805160a080820183525f80835260208084018290528385018290526060808501839052608085018390526001600160a01b03871683527f000000000000000000000000000000000000000000000000000000000000000060010182529185902085519384018652805460ff811615158552610100810465ffffffffffff1692850192909252600160e01b90910463ffffffff16948301949094526002840154929392908201906110569061207c565b63ffffffff168152602001611071836001018054905061207c565b63ffffffff1690529392505050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f5f6110ca5f356001600160e01b031916611a54565b155f356001600160e01b0319169061110257604051633dba50a160e11b81526001600160e01b03199091166004820152602401610897565b507f000000000000000000000000000000000000000000000000000000000000000080546001600160a01b0316331461114d576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0385165f908152600182016020526040902054859060ff166111955760405163b8fcaf8d60e01b81526001600160a01b039091166004820152602401610897565b505f6111a282878761243a565b9050856001600160a01b0316876001600160a01b03167f2dca2973678f770154952f3de8e4db2f5621bfe783f4652fa906e6a81f55b38d8360405161124691905f610100820190508251825263ffffffff602084015116602083015263ffffffff6040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390a38060a001516112658260e001518360c0015161206d565b9350935050505b935093915050565b604080516060810182525f80825260208083018290528284018290526001600160a01b03878116835260017f00000000000000000000000000000000000000000000000000000000000000000182528483209087168352600381019091529290209091906112f663ffffffff85166112eb83611ad0565b63ffffffff16612775565b6002820161130482866127dd565b8154811061131457611314613cb1565b5f918252602091829020604080516060810182526002909302909101805465ffffffffffff811684526001600160d01b03600160301b9091048116948401949094526001015490921691810191909152925050505b9392505050565b5f61139c7f00000000000000000000000000000000000000000000000000000000000000005460ff1690565b905090565b6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905260a083018290526001600160a01b038616825260017f000000000000000000000000000000000000000000000000000000000000000081019091529290209182015490919061141b908490612775565b80600101838154811061143057611430613cb1565b5f9182526020918290206040805160c081018252600293909302909101805465ffffffffffff81168452600160301b810463ffffffff90811695850195909552600160501b810490941691830191909152600160701b9092046001600160901b031660608201526001909101546001600160801b038082166080840152600160801b9091041660a0820152949350505050565b5f6114d85f356001600160e01b031916611a54565b155f356001600160e01b0319169061151057604051633dba50a160e11b81526001600160e01b03199091166004820152602401610897565b506001600160a01b0382165f90815260017f000000000000000000000000000000000000000000000000000000000000000001602052604090208054839060ff1661157a5760405163b8fcaf8d60e01b81526001600160a01b039091166004820152602401610897565b506115906001600160a01b03841633308861280a565b60405163266d6a8360e11b8152600481018690525f906001600160a01b03851690634cdad50690602401602060405180830381865afa1580156115d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f99190613c57565b90505f611604612843565b60028401549091505f6116168461284d565b90505f6116228a61284d565b9050825f036116af576040805160608101825265ffffffffffff80871682526001600160d01b0380861660208085019182528683169585019586526002808d018054600181810183555f92835293909120965193518516600160301b02939095169290921793909102909301918255925191018054919092166001600160d01b0319909116179055611785565b6040805160608101825265ffffffffffff861681526001600160d01b03841660208201526002880191810183836116e7600189613cc5565b815481106116f7576116f7613cb1565b5f91825260209091206001600290920201015461171d91906001600160d01b0316613cd8565b6001600160d01b039081169091528254600181810185555f9485526020948590208451958501518416600160301b0265ffffffffffff909616959095176002909202909401908155604090920151919092018054919092166001600160d01b03199091161790555b50506001600160a01b0387165f90815260038501602052604090206117aa9082612880565b5060408051828152602081018a90529081018490526001600160a01b0380881691908916907faaa2e2126d60124470cd278882c3a9d0b20a4b86dcb0d7fd8d6150a313c20b4d9060600160405180910390a3979650505050505050565b604051806060016040528060288152602001613ef86028913981565b61182c33611c53565b610b7b816128ac565b61183d611e4e565b610b7b7f0000000000000000000000000000000000000000000000000000000000000000826128d3565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006110a4565b6001600160a01b0382165f9081527f0000000000000000000000000000000000000000000000000000000000000000600181016020526040822082919082906118d9908787612aa3565b90508060a001516118f28260e001518360c0015161206d565b9350935050509250929050565b604080516060810182525f80825260208083018290528284018290526001600160a01b038616825260017f0000000000000000000000000000000000000000000000000000000000000000019052919091206002810154611961908490612775565b80600201838154811061197657611976613cb1565b5f918252602091829020604080516060810182526002909302909101805465ffffffffffff811684526001600160d01b03600160301b909104811694840194909452600101549092169181019190915291505092915050565b6119d7611e4e565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611a1b611080565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000080545f919060ff168061136957506001600160e01b031983165f90815260018201602052604090205460ff169392505050565b60025f5403611aca57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b60018101545f9061083f9061207c565b604080516080810182525f8082526020820181905291810182905260608101919091526001600160a01b038083165f9081526001860160209081526040808320938716835260038401909152812090611b3d825463ffffffff1690565b90505f611b51610db0610d96606485613c3b565b6040805160808101825263ffffffff808616825283166020808301919091525f828401819052606083018190526001600160a01b038b16815260028d01909152918220549293509091611bac9187918a908c9060ff16612df2565b9050806020015163ffffffff16815f015163ffffffff161015611be3576020810151845463ffffffff191663ffffffff9091161784555b98975050505050505050565b6040516001600160a01b03838116602483015260448201839052611c4e91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506130ca565b505050565b610b7b611e4e565b60017f00000000000000000000000000000000000000000000000000000000000000005b6001600160e01b0319929092165f90815260019092016020526040909120805460ff1916911515919091179055565b5f7f00000000000000000000000000000000000000000000000000000000000000005b805460ff1916911515919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015611d275750825b90505f8267ffffffffffffffff166001148015611d435750303b155b905081158015611d51575080155b15611d6f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d9957845460ff60401b1916600160401b1785555b611dc77f0000000000000000000000000000000000000000000000000000000000000000805460ff19169055565b611dcf613136565b611dd88761313e565b611de0613136565b7f0000000000000000000000000000000000000000000000000000000000000000611e0b8188611e80565b508315610c9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610c90565b33611e57611080565b6001600160a01b031614610b8f5760405163118cdaa760e01b8152336004820152602401610897565b81546001600160a01b0319166001600160a01b03821690811783556040517f14dc79d338b451b8b7b20e3191752ac97cbc8b011ff3b921597b83b1222896ae905f90a25050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f3757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f2b61314f565b6001600160a01b031614155b15610b8f5760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611faf575060408051601f3d908101601f19168201909252611fac91810190613c57565b60015b611fd757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461201a57604051632a87526960e21b815260048101829052602401610897565b611c4e8383613176565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b8f5760405163703e46dd60e11b815260040160405180910390fd5b5f828218828410028218611369565b5f63ffffffff8211156120ac576040516306dfcc6560e41b81526020600482015260248101839052604401610897565b5090565b604080516080810182525f8082526020820181905291810182905260608101829052906120dc866131cb565b6001600160a01b0385165f90815260038801602052604090208651919250905b866020015163ffffffff168163ffffffff1610156122ff575f61211f83836127dd565b90505f89600201828154811061213757612137613cb1565b5f918252602091829020604080516060810182526002909302909101805465ffffffffffff811684526001600160d01b03600160301b90910481169484019490945260010154909216818301529086015190915063ffffffff16821015806121b55750805f015165ffffffffffff16856060015165ffffffffffff16105b156121cd57505063ffffffff811660208801526122ff565b84602001516020015163ffffffff168210806121f757508185602001516040015163ffffffff1611155b1561220e576122068a836132cd565b865260208601525b5f63ffffffff84161561226a5760028b0161222a600185613cc5565b8154811061223a5761223a613cb1565b5f9182526020909120600160029092020101546040830151612265916001600160d01b031690613cf7565b612270565b81604001515b6001600160d01b031690505f6122c183602001516001600160d01b03166122bc848c8b6020015160a001516001600160801b03168c60200151608001516001600160801b03165f6133a7565b61206d565b9050818b6040018181516122d59190613d16565b90525060608b0180518291906122ec908390613d16565b90525050600190930192506120fc915050565b50949695505050505050565b6001600160a01b0382165f908152600184016020526040902054829060ff166123535760405163b8fcaf8d60e01b81526001600160a01b039091166004820152602401610897565b5061235d816133d4565b6001600160a01b0383165f81815260018601602052604090819020805465ffffffffffff949094166101000266ffffffffffff00199094169390931790925590517f5ccd584dac8e6bc3f1bb65998c977a6de993bdce50d837032f0f31e50fa048e6906123cd9084815260200190565b60405180910390a2505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610cef82613406565b60017f0000000000000000000000000000000000000000000000000000000000000000611cd1565b6124866040518061010001604052805f81526020015f63ffffffff1681526020015f63ffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6001600160a01b0383165f908152600185016020526040812060028101549091036124c45760405163376d5c9360e21b815260040160405180910390fd5b5f6124d0828686612aa3565b8254604082015191925063ffffffff600160e01b90910481169116116125095760405163376d5c9360e21b815260040160405180910390fd5b5f61251c8260e001518360c0015161206d565b604051632d182be560e21b815260048101829052306024820181905260448201529091506001600160a01b0387169063b460af94906064016020604051808303815f875af1158015612570573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125949190613c57565b506001830180545f81156125f25760a0850151836125b3600185613cc5565b815481106125c3576125c3613cb1565b5f9182526020909120600290910201546125ed9190600160701b90046001600160901b0316613d16565b6125f8565b8460a001515b835486526040805160c08101909152909150839080612615612843565b65ffffffffffff168152602001876020015163ffffffff168152602001876040015163ffffffff16815260200161264b84613476565b6001600160901b0316815260200161266688606001516134a9565b6001600160801b0316815260200161268188608001516134a9565b6001600160801b039081169091528254600181810185555f948552602094859020845160029093020180549585015160408087015160608801516001600160901b0316600160701b026dffffffffffffffffffffffffffff63ffffffff928316600160501b021669ffffffffffffffffffff948316600160301b0269ffffffffffffffffffff19909b1665ffffffffffff90981697909717999099179290921694909417969096178155608085015160a0909501518416600160801b029490931693909317919092015586015187549116600160e01b026001600160e01b0390911617909555509193505050509392505050565b805f03612795576040516308bc528d60e11b815260040160405180910390fd5b816127a1600183613cc5565b10156127ae600183613cc5565b8390916127d75760405163a926259160e01b815260048101929092526024820152604401610897565b50505050565b5f826001018263ffffffff16815481106127f9576127f9613cb1565b905f5260205f200154905092915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526127d79186918216906323b872dd90608401611c1c565b5f61139c426133d4565b5f6001600160d01b038211156120ac576040516306dfcc6560e41b815260d0600482015260248101839052604401610897565b5f5f61288b84611ad0565b6001808601805491820181555f908152602090200184905591505092915050565b5f7f0000000000000000000000000000000000000000000000000000000000000000611c7f565b6001600160a01b0381165f818152600184810160209081526040808420805460ff191690931790925581516338d52e0f60e01b815291519293926338d52e0f9260048082019392918290030181865afa158015612932573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129569190613c0c565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612991573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b59190613d29565b6001600160a01b0383165f818152600286016020908152604091829020805461ff00191661010060ff871602179055815163313ce56760e01b81529151939450849363313ce5679260048082019392918290030181865afa158015612a1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a409190613d29565b612a4a9190613d49565b6001600160a01b0383165f818152600286016020526040808220805460ff191660ff9590951694909417909355915190917f2a5323a3587a95753c6e2f0e46a50f9db0c156f120fe90734ab7290f667e78ec91a2505050565b612aef6040518061010001604052805f81526020015f63ffffffff1681526020015f63ffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b60028401548454600160e01b900463ffffffff165f612b1a610db0612b148785613d16565b8561206d565b90505f604051806101000160405280896001018054905081526020018463ffffffff1681526020018363ffffffff168152602001886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bae9190613c57565b8152602001886001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c139190613c57565b81526020015f81526020015f81526020015f81525090505f816020015190505b816040015163ffffffff168163ffffffff161015612de6575f896002018263ffffffff1681548110612c6757612c67613cb1565b5f9182526020808320604080516060810182526002909402909101805465ffffffffffff811685526001600160d01b03600160301b9091048116938501939093526001015490911690820152915063ffffffff831615612d165760028b01612cd0600185613d62565b63ffffffff1681548110612ce657612ce6613cb1565b5f9182526020909120600160029092020101546040830151612d11916001600160d01b031690613cf7565b612d1c565b81604001515b6001600160d01b03169050808460a001818151612d399190613d16565b905250602082015160e0850180516001600160d01b0390921691612d5e908390613d16565b9052506040516303d1689d60e11b8152600481018290526001600160a01b038b16906307a2d13a90602401602060405180830381865afa158015612da4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc89190613c57565b8460c001818151612dd99190613d16565b9052505050600101612c33565b50979650505050505050565b604080516080810182525f808252602082018190529181018290526060810182905290612e1e876131cb565b6001600160a01b0385165f90815260038901602052604090208751919250905b876020015163ffffffff168163ffffffff1610156130bd575f612e6183836127dd565b90505f8a6002018281548110612e7957612e79613cb1565b5f918252602091829020604080516060810182526002909302909101805465ffffffffffff811684526001600160d01b03600160301b90910481169484019490945260010154909216818301529086015190915063ffffffff1682101580612ef75750805f015165ffffffffffff16856060015165ffffffffffff16105b15612f0f57505063ffffffff811660208901526130bd565b84602001516020015163ffffffff16821080612f3957508185602001516040015163ffffffff1611155b15612f5057612f488b836132cd565b865260208601525b5f63ffffffff841615612fac5760028c01612f6c600185613cc5565b81548110612f7c57612f7c613cb1565b5f9182526020909120600160029092020101546040830151612fa7916001600160d01b031690613cf7565b612fb2565b81604001515b6001600160d01b031690505f612ffe83602001516001600160d01b03166122bc848c8b6020015160a001516001600160801b03168c60200151608001516001600160801b03165f6133a7565b60208089015160808082015160a0928301518c51604080518c81529687018a905286018790526001600160801b039283166060870152911691840191909152908201529091506001600160a01b03808d1691908c16907f8ff8338e7498bbe048cb55e2de5d788b04d51c5fe6fcf452487810e60eebf2789060c00160405180910390a3818c6040018181516130939190613d16565b90525060608c0180518291906130aa908390613d16565b9052505060019093019250612e3e915050565b5095979650505050505050565b5f5f60205f8451602086015f885af1806130e9576040513d5f823e3d81fd5b50505f513d9150811561310057806001141561310d565b6001600160a01b0384163b155b156127d757604051635274afe760e01b81526001600160a01b0385166004820152602401610897565b610b8f6134dc565b6131466134dc565b610b7b81613525565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610826565b61317f82613556565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156131c357611c4e82826135cc565b610cef61363e565b6131d3613890565b6001828101545f916131e491613cc5565b60018085015f90815260208120929350919083901b016040805160c081018252825465ffffffffffff8082168352600160301b820463ffffffff908116602080860191909152600160501b8404821685870152600160701b9093046001600160901b03166060808601919091526001909601546001600160801b03808216608080880191909152600160801b9092041660a0860152855190810186528881529283018490528954600160e01b810490911694830194909452919450928301916101009004166132b1612843565b6132bb9190613d7e565b65ffffffffffff169052949350505050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a08101829052600184018054919291826133138387838561365d565b5f8481526020812091925090600183901b016040805160c081018252825465ffffffffffff81168252600160301b810463ffffffff9081166020840152600160501b82041692820192909252600160701b9091046001600160901b031660608201526001909101546001600160801b038082166080840152600160801b9091041660a0820152989197509095505050505050565b5f6133ca846133b787600a613e77565b6133c19086613d16565b889190856136bc565b9695505050505050565b5f65ffffffffffff8211156120ac576040516306dfcc6560e41b81526030600482015260248101839052604401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6001600160901b038211156120ac576040516306dfcc6560e41b81526090600482015260248101839052604401610897565b5f6001600160801b038211156120ac576040516306dfcc6560e41b81526080600482015260248101839052604401610897565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b8f57604051631afcd79f60e31b815260040160405180910390fd5b61352d6134dc565b6001600160a01b038116610f8b57604051631e4fbdf760e01b81525f6004820152602401610897565b806001600160a01b03163b5f0361358b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516135e89190613e85565b5f60405180830381855af49150503d805f8114613620576040519150601f19603f3d011682016040523d82523d5f602084013e613625565b606091505b50915091506136358583836136fe565b95945050505050565b3415610b8f5760405163b398979f60e01b815260040160405180910390fd5b5f5b818310156136b4575f613672848461375a565b5f878152602090209091508590600183901b0154600160501b900463ffffffff16116136aa576136a3816001613d16565b93506136ae565b8092505b5061365f565b509392505050565b5f6136e96136c983613774565b80156136e457505f84806136df576136df613e9b565b868809115b151590565b6136f48686866137a0565b6136359190613d16565b6060826137135761370e82613856565b611369565b815115801561372a57506001600160a01b0384163b155b1561375357604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b5080611369565b5f6137686002848418613eaf565b61136990848416613d16565b5f600282600381111561378957613789613ec2565b6137939190613ed6565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036137d4578382816137ca576137ca613e9b565b0492505050611369565b8084116137eb576137eb600385150260111861387f565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156138665780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b715f52806020526024601cfd5b60405180608001604052805f81526020016138d86040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b81525f6020820181905260409091015290565b5f602082840312156138fb575f5ffd5b81356001600160e01b031981168114611369575f5ffd5b6001600160a01b0381168114610b7b575f5ffd5b5f5f60408385031215613937575f5ffd5b823561394281613912565b9150602083013561395281613912565b809150509250929050565b5f6020828403121561396d575f5ffd5b813561136981613912565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561399d575f5ffd5b82356139a881613912565b9150602083013567ffffffffffffffff8111156139c3575f5ffd5b8301601f810185136139d3575f5ffd5b803567ffffffffffffffff8111156139ed576139ed613978565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715613a1c57613a1c613978565b604052818152828201602001871015613a33575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f5f60808688031215613a66575f5ffd5b853594506020860135613a7881613912565b93506040860135613a8881613912565b9250606086013567ffffffffffffffff811115613aa3575f5ffd5b8601601f81018813613ab3575f5ffd5b803567ffffffffffffffff811115613ac9575f5ffd5b886020828401011115613ada575f5ffd5b959894975092955050506020019190565b5f5f60408385031215613afc575f5ffd5b8235613b0781613912565b946020939093013593505050565b5f5f5f60608486031215613b27575f5ffd5b8335613b3281613912565b92506020840135613b4281613912565b929592945050506040919091013590565b5f5f5f60608486031215613b65575f5ffd5b8335613b7081613912565b92506020840135613b8081613912565b9150604084013563ffffffff81168114613b98575f5ffd5b809150509250925092565b5f5f5f60608486031215613bb5575f5ffd5b833592506020840135613bc781613912565b91506040840135613b9881613912565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613c1c575f5ffd5b815161136981613912565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff818116838216019081111561083f5761083f613c27565b5f60208284031215613c67575f5ffd5b5051919050565b85815284602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561083f5761083f613c27565b6001600160d01b03818116838216019081111561083f5761083f613c27565b6001600160d01b03828116828216039081111561083f5761083f613c27565b8082018082111561083f5761083f613c27565b5f60208284031215613d39575f5ffd5b815160ff81168114611369575f5ffd5b60ff828116828216039081111561083f5761083f613c27565b63ffffffff828116828216039081111561083f5761083f613c27565b65ffffffffffff828116828216039081111561083f5761083f613c27565b6001815b600184111561126c57808504811115613dbb57613dbb613c27565b6001841615613dc957908102905b60019390931c928002613da0565b5f82613de55750600161083f565b81613df157505f61083f565b8160018114613e075760028114613e1157613e2d565b600191505061083f565b60ff841115613e2257613e22613c27565b50506001821b61083f565b5060208310610133831016604e8410600b8410161715613e50575081810a61083f565b613e5c5f198484613d9c565b805f1904821115613e6f57613e6f613c27565b029392505050565b5f61136960ff841683613dd7565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b5f82613ebd57613ebd613e9b565b500490565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680613ee857613ee8613e9b565b8060ff8416069150509291505056fe35303338656564366465373037303361306464313932623137383461616465633839386664393464a264697066735822122067f052feca066595786505dab1aa1986d230c64f1f8f7c8af9afbb1b54f10d2f64736f6c634300081d0033