265 txs
49.8k calls
constructor
constructor(address _posm, address _permit2, address _poolManager, address _universalRouter, address _router, address _feeAddress)
functions
DEADADDRESS
viewfunction DEADADDRESS() view returns (address)
feeAddress
viewfunction feeAddress() view returns (address)
hookAddress
viewfunction hookAddress() view returns (address)
lastTwapBlock
viewfunction lastTwapBlock() view returns (uint256)
listOfRouters
viewfunction listOfRouters(address) view returns (bool)
loadingLiquidity
viewfunction loadingLiquidity() view returns (bool)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
PNKSTR_ADDRESS
viewfunction PNKSTR_ADDRESS() view returns (address)
PNKSTR_HOOK_ADDRESS
viewfunction PNKSTR_HOOK_ADDRESS() view returns (address)
routerRestrict
viewfunction routerRestrict() view returns (bool)
twapDelayInBlocks
viewfunction twapDelayInBlocks() view returns (uint256)
twapIncrement
viewfunction twapIncrement() view returns (uint256)
validTransfer
viewfunction validTransfer(address from, address to, address tokenAddress) view returns (bool)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
ownerLaunchNFTStrategy
payablefunction ownerLaunchNFTStrategy(address collection, uint256 lowTokenId, uint256 highTokenId, string tokenName, string tokenSymbol, address collectionOwner) payable returns (address)
processTokenTwap
nonpayablefunction processTokenTwap()
renounceOwnership
payablefunction renounceOwnership() payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
setRouter
nonpayablefunction setRouter(address _router, bool status)
setRouterRestrict
nonpayablefunction setRouterRestrict(bool status)
transferOwnership
payablefunction transferOwnership(address newOwner) payable
updateHookAddress
nonpayablefunction updateHookAddress(address _hookAddress)
updatePriceMultiplier
nonpayablefunction updatePriceMultiplier(address nftStrategy, uint256 newMultiplier)
updateTokenName
nonpayablefunction updateTokenName(address nftStrategy, string tokenName)
updateTokenSymbol
nonpayablefunction updateTokenSymbol(address nftStrategy, string tokenSymbol)
events
NFTStrategyRangeLaunched
event NFTStrategyRangeLaunched(address indexed collection, address indexed nftStrategy, uint256 lowTokenId, uint256 highTokenId, string tokenName, string tokenSymbol)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
errors
AlreadyInitialized
error AlreadyInitialized()
HookNotSet
error HookNotSet()
InvalidTokenRange
error InvalidTokenRange()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoETHToTwap
error NoETHToTwap()
NoHandoverRequest
error NoHandoverRequest()
Reentrancy
error Reentrancy()
TwapDelayNotMet
error TwapDelayNotMet()
Unauthorized
error Unauthorized()
creation bytecode
0x610100346101d757601f6138e838819003918201601f19168301916001600160401b038311848410176101db5780849260c0946040528339810103126101d757610048816101ef565b90610055602082016101ef565b90610062604082016101ef565b61006e606083016101ef565b608083015190936001600160a01b0382169390918490036101d75760a061009591016101ef565b670de0b6b3a76400006002556001600381905560c08590526001600160a01b03968716608081905292871660a081905260e094909452305f90815260066020526040808220805460ff1990811685179091559482528082208054861684179055948152848120805485168317905594855283852080548416821790559486168452918320805482168517905561dead83527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821685179055600580549091168417905582546001600160a01b031916931692909217905533638b78c6d819819055907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36040516136e49081610204823960805181610d24015260a05181610d48015260c05181818161082f0152610a46015260e051816111a70152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101d75756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c806307a88b66146109785780630ff3c28b146109555780631803e284146109385780631db52755146107095780632175a1d4146106da578063256929621461068f57806332a3cf9614610668578063412753581461063f578063451d29d5146105e75780635289bcb1146105c157806354d1f13d1461057b57806355fd00e814610522578063715018a6146104d75780638da5cb5b146104aa578063a1a2497d14610454578063a88dfec814610418578063c2fa867b146103fa578063c3b9e0f0146103bb578063c3c6467414610364578063c8c04a09146102f9578063d645d433146102ca578063e6c69313146102ac578063ec0788211461028e578063f04e283e14610240578063f2fde38b14610201578063f838eace146101835763fee81cf41461014e575061000e565b3461018057602036600319011261018057610167611047565b9063389a75e1600c5252602080600c2054604051908152f35b80fd5b5034610180576040366003190112610180578061019e611047565b6101a66112c6565b6001600160a01b0316803b156101fe57818091602460405180948193631040e27560e11b8352833560048401525af180156101f3576101e25750f35b816101ec91611079565b6101805780f35b6040513d84823e3d90fd5b50fd5b50602036600319011261018057610216611047565b61021e6112c6565b8060601b156102335761023090611400565b80f35b637448fbae82526004601cfd5b50602036600319011261018057610255611047565b61025d6112c6565b63389a75e1600c528082526020600c20805442116102815790826102309255611400565b636f5e881883526004601cfd5b50346101805780600319360112610180576020600254604051908152f35b50346101805780600319360112610180576020600454604051908152f35b5034610180578060031936011261018057602060405173faaad5b731f52cdc9746f2414c823eca9b06e8448152f35b50346101805780610309366110fd565b906103126112c6565b6001600160a01b0316803b15610360576040516329bfa98960e11b815260206004820152918391839182908490829061034f906024830190611140565b03925af180156101f3576101e25750f35b5050fd5b50346101805760403660031901126101805761037e611047565b602435908115158092036103b7576103946112c6565b60018060a01b031682526006602052604082209060ff8019835416911617905580f35b8280fd5b50346101805760203660031901126101805760209060ff906040906001600160a01b036103e6611047565b168152600684522054166040519015158152f35b50346101805780600319360112610180576020600354604051908152f35b5034610180576020366003190112610180576004358015158091036104505761043f6112c6565b60ff80196005541691161760055580f35b5080fd5b50346101805780610464366110fd565b9061046d6112c6565b6001600160a01b0316803b15610360576040516384da92a760e01b815260206004820152918391839182908490829061034f906024830190611140565b5034610180578060031936011261018057638b78c6d819546040516001600160a01b039091168152602090f35b5080600319360112610180576104eb6112c6565b80638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380638b78c6d8195580f35b50346101805760603660031901126101805761053c611047565b602435906001600160a01b03821682036103b757604435926001600160a01b0384168403610180576020610571858585611164565b6040519015158152f35b50806003193601126101805763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b5034610180578060031936011261018057602060ff60015460a01c166040519015158152f35b503461018057602036600319011261018057610601611047565b6106096112c6565b81546001600160a01b0319166001600160a01b039190911690811782558152600660205260408120805460ff1916600117905580f35b50346101805780600319360112610180576001546040516001600160a01b039091168152602090f35b5034610180578060031936011261018057546040516001600160a01b039091168152602090f35b50806003193601126101805763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5034610180578060031936011261018057602060405173c50673edb3a7b94e8cad8a7d4e0cd68864e33edf8152f35b50346101805780600319360112610180573068929eee149b4bd21268541461092b573068929eee149b4bd212685547801561091c5760045460035481018091116108f157431061090d5760025490818110610905575b5060058102818104600514821517156108f1576103e89004908181039081116108f15743600455602061080c61018460405161079a8161105d565b86815273c50673edb3a7b94e8cad8a7d4e0cd68864e33edf84820152866040820152603c606082015273faaad5b731f52cdc9746f2414c823eca9b06e8446080820152604051948593849263b1a0d57160e01b8452826004850152896024850152600160448501526064840190611334565b610160610104830152610164820188905261dead610124830152426101448301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156108e6576108bb575b508047106108ae57813881808433620186a0f11561088d575b503868929eee149b4bd212685580f35b600b6016913384526073825360ff602053f0156108aa575f61087d565b3838fd5b63b12d13eb82526004601cfd5b602090813d83116108df575b6108d18183611079565b81010312610450575f610864565b503d6108c7565b6040513d85823e3d90fd5b634e487b7160e01b83526011600452602483fd5b90505f61075f565b6353f77c5b60e01b8252600482fd5b631863d7fb60e01b8252600482fd5b63ab143c0690526004601cfd5b5034610180578060031936011261018057602060405161dead8152f35b5034610180578060031936011261018057602060ff600554166040519015158152f35b5060c0366003190112610ffd5761098d611047565b6024356044359160643567ffffffffffffffff8111610ffd576109b49036906004016110b7565b9260843567ffffffffffffffff8111610ffd576109d59036906004016110b7565b60a4356001600160a01b038116949190859003610ffd576109f46112c6565b5f546001600160a01b031680156110385783831161102957604051906122718083019683881067ffffffffffffffff891117611015578392610aab9261143e8539308952602089015260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016604089015260018060a01b0316968760608201528560808201528660a082015261010060c0820152610a9c61010082018b611140565b9060e081830391015284611140565b03905ff0958615610ff2576001805460ff60a01b1916600160a01b1790555f5460408051610caa996001600160a01b039081169993610c849392610cbc929190911690610bd890610afb8161105d565b5f815260208101928d84525f86830152603c6060830152608082015260209d8e93610c5e8751988994610b2e8887611079565b5f8652601f19880136898801378951600160f91b89820152600d60f81b60218201526002815293610b60602286611079565b610b80610be68a610bd8610b726112fa565b9a8f51948593840188611334565b620d89b31960c08401526202abac60e0840152692189600cb9f61418ad9761010084015260026101208401526b033b2e3c9fd0803ce800000161014084015230610160840152610180808401526101a0830190611140565b03601f198101835282611079565b610bef88611377565b52610bf987611377565b50815190518b516001600160a01b039283168b8201529116818c01528a8152610c23606082611079565b610c2c87611398565b52610c3686611398565b50610bd8610c426112fa565b9b8b5194859363f702040560e01b8c8601526024850190611334565b6d18b48e29793d2f0000000000000060c484015260e060e4840152610104830190611140565b610c8d89611377565b52610c9788611377565b5086519687958601526060850190611140565b838103601f19016040850152906113a8565b603c4201804211611001578a610d0691610cf260405194859363dd46508f60e01b90850152604060248501526064840190611140565b90604483015203601f198101835282611079565b610d0f82611398565b52610d1981611398565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116907f000000000000000000000000000000000000000000000000000000000000000016803b15610ffd576040516387517c4560e01b8152600481018b9052602481018390526001600160a01b03604482015265ffffffffffff6064820152905f908290608490829084905af18015610ff257610fd7575b508a809392610dea928c6002604051809681958294631592ca1b60e31b8452600484015260248301906113a8565b03925af180156108e657610ede575b506001805460ff60a01b1916905581546001600160a01b0316803b156103b757604483926040519c8d938492637534ba6160e11b84528d600485015260248401525af1988915610ed157879899610eae575b50507fd8de4ea6d1e8ee697cfd7c8bdf672deda866da7a73ad6fe705d9f11c6e6fc588939291610e95610ea39260405195869586528b860152608060408601526080850190611140565b908382036060850152611140565b0390a3604051908152f35b818093949596979850610ec091611079565b610180579081879695949392610e4b565b50604051903d90823e3d90fd5b3d8084833e610eed8183611079565b8101908a81830312610fcf5780519067ffffffffffffffff8211610fd3570181601f82011215610fcf578051610f22816112e2565b92610f306040519485611079565b8184528c8085019260051b84010192818411610fcb578d8101925b848410610f5c575050505050610df9565b835167ffffffffffffffff8111610fc757820183603f82011215610fc7578f9182820151610f898161109b565b90610f976040519283611079565b808252868580838701010111610fc35784818d9260408397018386015e83010152815201930192610f4b565b8b80fd5b8880fd5b8680fd5b8380fd5b8480fd5b610fe69193929b505f90611079565b5f999091610dea610dbc565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b6328704ad560e01b5f5260045ffd5b630869729360e41b5f5260045ffd5b600435906001600160a01b0382168203610ffd57565b60a0810190811067ffffffffffffffff82111761101557604052565b90601f8019910116810190811067ffffffffffffffff82111761101557604052565b67ffffffffffffffff811161101557601f01601f191660200190565b81601f82011215610ffd578035906110ce8261109b565b926110dc6040519485611079565b82845260208383010111610ffd57815f926020809301838601378301015290565b906040600319830112610ffd576004356001600160a01b0381168103610ffd57916024359067ffffffffffffffff8211610ffd5761113d916004016110b7565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60ff600554161561126c576001600160a01b03165f8181526006602052604090205490919060ff1615806112a4575b80611274575b6111a557505050600190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691821461126c576001600160a01b0316146111e957505f90565b604051630716cd1160e01b815290602090829060049082906001600160a01b03165afa908115610ff2575f91611231575b5080156112245790565b5060ff60015460a01c1690565b90506020813d602011611264575b8161124c60209383611079565b81010312610ffd57518015158103610ffd575f61121a565b3d915061123f565b505050600190565b506001600160a01b038316828114159081611290575b50611199565b6001600160a01b038316141590505f61128a565b506001600160a01b0381165f9081526006602052604090205460ff1615611193565b638b78c6d8195433036112d557565b6382b429005f526004601cfd5b67ffffffffffffffff81116110155760051b60200190565b6040516060919061130b8382611079565b6002815291601f1901825f5b82811061132357505050565b806060602080938501015201611317565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b8051156113845760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156113845760400190565b9080602083519182815201916020808360051b8301019401925f915b8383106113d357505050505090565b90919293946020806113f1600193601f198682030187528951611140565b970193019301919392906113c4565b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d8195556fe61014080604052346104c757612271803803809161001d82856104cb565b8339810190610100818303126104c757610036816104ee565b90610043602082016104ee565b6040820151906001600160a01b03821682036104c757610065606084016104ee565b9060808401519260a08501519460c081015160018060401b0381116104c75788610090918301610502565b60e08201519098906001600160401b0381116104c7576100b09201610502565b6104b0600255670de0b6b3a764000060065560016007556101009690965260805260e0526001600160a01b03166101205260a05260c05281516001600160401b0381116103dd575f54600181811c911680156104bd575b60208210146103bf57601f811161045b575b50602092601f82116001146103fc57928192935f926103f1575b50508160011b915f199060031b1c1916175f555b80516001600160401b0381116103dd57600154600181811c911680156103d3575b60208210146103bf57601f811161035c575b50602091601f82116001146102fc579181925f926102f1575b50508160011b915f199060031b1c1916176001555b610100516805345cdf77eb68f44c546b033b2e3c9fd0803ce80000008101916001600160a01b03169082106102e457610249916805345cdf77eb68f44c556387a211a2600c52805f526020600c206b033b2e3c9fd0803ce800000081540190556b033b2e3c9fd0803ce8000000602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a361056f565b604051611bf7908161067a8239608051816114cc015260a05181818161021d0152610d0f015260c0518181816105b2015261085d015260e05181818161099e01528181610fbc0152818161142501526115d401526101005181818161089601528181610b0001528181610d95015281816112fd0152611a7801526101205181818161026001528181610cc80152818161106401526116b60152f35b63e5cfe9575f526004601cfd5b015190505f80610193565b601f1982169260015f52805f20915f5b8581106103445750836001951061032c575b505050811b016001556101a8565b01515f1960f88460031b161c191690555f808061031e565b9192602060018192868501518155019401920161030c565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c810191602084106103b5575b601f0160051c01905b8181106103aa575061017a565b5f815560010161039d565b9091508190610394565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610168565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610133565b601f198216935f8052805f20915f5b868110610443575083600195961061042b575b505050811b015f55610147565b01515f1960f88460031b161c191690555f808061041e565b9192602060018192868501518155019401920161040b565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c810191602084106104b3575b601f0160051c01905b8181106104a85750610119565b5f815560010161049b565b9091508190610492565b90607f1690610107565b5f80fd5b601f909101601f19168101906001600160401b038211908210176103dd57604052565b51906001600160a01b03821682036104c757565b81601f820112156104c7578051906001600160401b0382116103dd5760405192610536601f8401601f1916602001856104cb565b828452602083830101116104c757815f9260208093018386015e8301015290565b908160209103126104c7575180151581036104c75790565b61010051604051630ff3c28b60e01b815290602090829060049082906001600160a01b03165afa908115610640575f9161065a575b5015801561064e575b61064b5761010051604051630abfa01d60e31b81525f60048201526001600160a01b0392831660248201523060448201529160209183916064918391165afa908115610640575f91610611575b501561060257565b631e8272b760e11b5f5260045ffd5b610633915060203d602011610639575b61062b81836104cb565b810190610557565b5f6105fa565b503d610621565b6040513d5f823e3d90fd5b50565b5060ff600954166105ad565b610673915060203d6020116106395761062b81836104cb565b5f6105a456fe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c806306fdde03146117c35780630716cd11146117a1578063095ea7b314611705578063150b7a021461166f5780631803e2841461165357806318160ddd1461162e57806319d6150d146115b65780631db52755146113695780632081c4ea146112e757806323b2f392146112ca57806323b872dd146111c857806324abf96214611007578063313ce56714610feb57806332a3cf9614610fa657806332cb6b0c14610f7f5780633644e51514610ef6578063537f531214610d835780635d9644c414610d6557806370a0823114610d3257806375b2815f14610cf75780637de1e53614610cb25780637ecebe0014610c7f57806384da92a714610aee57806390ba7a3214610ac457806395d89b41146109f0578063a6ee3a841461097d578063a9059cbb146108e3578063c2fa867b146108c5578063c45a015514610880578063cda137ce14610845578063d505accf1461067d578063d50cb88b1461065f578063dd62ed3e1461062a578063e6c693131461060c578063ec078821146105ee5763f392c716146101b1575061000e565b346105eb5760803660031901126105eb5760043560243567ffffffffffffffff81116105e9576101e590369060040161182e565b6044359290916064356001600160a01b03811681036105e5573068929eee149b4bd2126854146105d8573068929eee149b4bd21268557f0000000000000000000000000000000000000000000000000000000000000000851080156105af575b6105a0576040516370a0823160e01b815230600482015247947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316949193909190602085602481895afa948515610595578995610561575b506040516331a9108f60e11b8152600481018990526020816024818a5afa908115610556578a91610537575b506001600160a01b0316301461052857600454821161051957918893918493826040519384928337810185815203925af13d15610511573d906103138261187e565b91610321604051938461185c565b82523d87602084013e5b156104e857506040516370a0823160e01b8152306004820152602081602481865afa9081156104dd5786916104a7575b50600182018092116104935703610484576020602491604051928380926331a9108f60e11b82528760048301525afa90811561047957849161044a575b50306001600160a01b039091160361043b576103b59047906119e8565b6103c1816004546119e8565b600455600254808202908282041482151715610427577f272af40a157c8d1a7d3bf7ff2920db021097ec61b7e260f97bb50144520ad177916103e8604092048486526003602052808387205582519182526020820152a23868929eee149b4bd212685580f35b634e487b7160e01b84526011600452602484fd5b631022318760e21b8352600483fd5b61046c915060203d602011610472575b610464818361185c565b8101906119f5565b5f610398565b503d61045a565b6040513d86823e3d90fd5b630b7cb52160e41b8452600484fd5b634e487b7160e01b86526011600452602486fd5b90506020813d6020116104d5575b816104c26020938361185c565b810103126104d157515f61035b565b5f80fd5b3d91506104b5565b6040513d88823e3d90fd5b604051632cd7eb6360e11b81526020600482015290819061050d9060248301906117de565b0390fd5b60609061032b565b63f14a42b760e01b8952600489fd5b63085cf94760e41b8952600489fd5b610550915060203d60201161047257610464818361185c565b5f6102d1565b6040513d8c823e3d90fd5b9094506020813d60201161058d575b8161057d6020938361185c565b810103126104d15751935f6102a5565b3d9150610570565b6040513d8b823e3d90fd5b6305033e0360e41b8652600486fd5b507f00000000000000000000000000000000000000000000000000000000000000008511610245565b63ab143c0686526004601cfd5b8580fd5b825b80fd5b50346105eb57806003193601126105eb576020600654604051908152f35b50346105eb57806003193601126105eb576020600854604051908152f35b50346105eb5760403660031901126105eb576020610657610649611802565b610651611818565b90611a14565b604051908152f35b50346105eb57806003193601126105eb576020600254604051908152f35b50346105eb5760e03660031901126105eb57610697611802565b61069f611818565b604435606435906084359260ff841684036105e5576001600160a01b0316936e22d473030f116ddee9f6b43ac78ba385188219151715610838576106e161193a565b602081519101209280421161082b576040519160018060a01b03169465383775081901600e5285885260c06020600c20938454937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252602082019788528460408301987fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc68a528b606085019a468c528c608087019330855260a08820602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988525252888a525260a082015220604e526042602c20885260ff1660205260a43560405260c43560605260208060808960015afa90853d510361081e570190556303faf4f960a51b84176040526034602c20557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a380f35b63ddafbaef88526004601cfd5b631a15a3cc87526004601cfd5b633f68539a86526004601cfd5b50346105eb57806003193601126105eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346105eb57806003193601126105eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346105eb57806003193601126105eb576020600754604051908152f35b50346105eb5760403660031901126105eb576108fd611802565b6024356387a211a2600c523383526020600c208054808311610970579383918361096596039055526020600c20818154019055602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a333611a69565b602060405160018152f35b63f4d678b885526004601cfd5b50346105eb5760203660031901126105eb576004358015158091036109ec577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036109dd5760ff80196009541691161760095580f35b635a91834f60e01b8252600482fd5b5080fd5b50346105eb57806003193601126105eb57604051908060015490610a1382611902565b8085529160018116908115610a9d5750600114610a53575b610a4f84610a3b8186038261185c565b6040519182916020835260208301906117de565b0390f35b600181525f516020611ba25f395f51905f52939250905b808210610a8357509091508101602001610a3b82610a2b565b919260018160209254838588010152019101909291610a6a565b60ff191660208087019190915292151560051b85019092019250610a3b9150839050610a2b565b50346105eb5760203660031901126105eb5760406020916004358152600383522054604051908152f35b50346105eb57610afd3661189a565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610c7057815167ffffffffffffffff8111610c5c57610b498254611902565b601f8111610bf5575b50602092601f8211600114610b8d57928293829392610b82575b50508160011b915f199060031b1c191617815580f35b015190505f80610b6c565b828052601f198216935f516020611b825f395f51905f5291845b868110610bdd5750836001959610610bc5575b505050811b01815580f35b01515f1960f88460031b161c191690555f8080610bba565b91926020600181928685015181550194019201610ba7565b828052601f820160051c5f516020611b825f395f51905f52019060208310610c47575b601f0160051c5f516020611b825f395f51905f5201905b818110610c3c5750610b52565b838155600101610c2f565b5f516020611b825f395f51905f529150610c18565b634e487b7160e01b82526041600452602482fd5b631966391b60e11b8152600490fd5b50346105eb5760203660031901126105eb57610c99611802565b906338377508600c5252602080600c2054604051908152f35b50346105eb57806003193601126105eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346105eb57806003193601126105eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346105eb5760203660031901126105eb57610d4c611802565b906387a211a2600c5252602080600c2054604051908152f35b50346105eb57806003193601126105eb576020600454604051908152f35b50346105eb57610d923661189a565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610c7057815167ffffffffffffffff8111610c5c57610ddf600154611902565b601f8111610e8e575b50602092601f8211600114610e2457928293829392610e19575b50508160011b915f199060031b1c19161760015580f35b015190505f80610e02565b60018352601f198216935f516020611ba25f395f51905f5291845b868110610e765750836001959610610e5e575b505050811b0160015580f35b01515f1960f88460031b161c191690555f8080610e52565b91926020600181928685015181550194019201610e3f565b60018352601f820160051c5f516020611ba25f395f51905f52019060208310610ee1575b601f0160051c5f516020611ba25f395f51905f5201905b818110610ed65750610de8565b838155600101610ec9565b5f516020611ba25f395f51905f529150610eb2565b50346105eb57806003193601126105eb57602060a0610f1361193a565b828151910120604051907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015220604051908152f35b50346105eb57806003193601126105eb5760206040516b033b2e3c9fd0803ce80000008152f35b50346105eb57806003193601126105eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346105eb57806003193601126105eb57602060405160128152f35b5060203660031901126104d1576004353068929eee149b4bd2126854146111bb573068929eee149b4bd2126855805f52600360205260405f205480156111ac5780340361119d576040516331a9108f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa908115611164575f9161117e575b50306001600160a01b039091160361116f57803b156104d1575f80916064604051809481936323b872dd60e01b83523060048401523360248401528860448401525af180156111645761114e575b5060407f89c3b465a41d0ab0891833425d7da4f89bafffceffba56a40bfafff01d68d51e9183855260036020528482812055611130816005546119db565b6005558151908152336020820152a23868929eee149b4bd212685580f35b61115b9193505f9061185c565b5f9160406110f2565b6040513d5f823e3d90fd5b631022318760e21b5f5260045ffd5b611197915060203d60201161047257610464818361185c565b5f6110a4565b633c0cc37960e11b5f5260045ffd5b63d135e8bd60e01b5f5260045ffd5b63ab143c065f526004601cfd5b346104d15760603660031901126104d1576111e1611802565b6111e9611818565b604435918060601b6e22d473030f116ddee9f6b43ac78ba33303611280575b6387a211a217600c526020600c2092835493848211611273578161096595039055825f526020600c20818154019055602052600c5160601c60018060a01b0382167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3611a69565b63f4d678b85f526004601cfd5b33602052637f5e9f208117600c526034600c209081549182196112a6575b509050611208565b8286116112bd57856387a211a2930390558561129e565b6313be252b5f526004601cfd5b346104d1575f3660031901126104d1576020600554604051908152f35b346104d15760203660031901126104d1576004357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361135a5761044c8110801561134f575b61134057600255005b631bc4bcf760e21b5f5260045ffd5b506127108111611337565b631966391b60e11b5f5260045ffd5b346104d1575f3660031901126104d15760055480156115a757611391600854600754906119db565b43106115985760065490818110611590575b600582028281046005148315171561157c576113c76103e86113d8920480946119e8565b916113d284846119db565b906119e8565b6005554360085560405160a081019080821067ffffffffffffffff8311176115685760409182525f808252306020808401918252838501838152603c606086019081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660808801908152975163b1a0d57160e01b8152600481018a90526024810187905260016044820152965181166064880152935184166084870152905162ffffff1660a48601525160020b60c48501529351811660e484015261016061010484015261016483019190915261dead61012483015242610144830152909283916101849183917f0000000000000000000000000000000000000000000000000000000000000000165af180156111645761153d575b50804710611530575f3881808433620186a0f11561151357005b600b601691335f526073825360ff602053f01561152c57005b3838fd5b63b12d13eb5f526004601cfd5b602090813d8311611561575b611553818361185c565b810103126104d157816114f9565b503d611549565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b9050806113a3565b6353f77c5b60e01b5f5260045ffd5b631863d7fb60e01b5f5260045ffd5b5f3660031901126104d1573068929eee149b4bd2126854146111bb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361161f5761160e346004546119db565b6004553868929eee149b4bd2126855005b635a91834f60e01b5f5260045ffd5b346104d1575f3660031901126104d15760206805345cdf77eb68f44c54604051908152f35b346104d1575f3660031901126104d157602060405161dead8152f35b346104d15760803660031901126104d157611688611802565b50611691611818565b5060643567ffffffffffffffff81116104d1576116b290369060040161182e565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036116f657604051630a85bd0160e11b8152602090f35b63517172a160e11b5f5260045ffd5b346104d15760403660031901126104d15761171e611802565b602435906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba318821915171561179457602052637f5e9f20600c52335f52806034600c20555f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b633f68539a5f526004601cfd5b346104d1575f3660031901126104d157602060ff600954166040519015158152f35b346104d1575f3660031901126104d157610a4f610a3b61193a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036104d157565b602435906001600160a01b03821682036104d157565b9181601f840112156104d15782359167ffffffffffffffff83116104d157602083818601950101116104d157565b90601f8019910116810190811067ffffffffffffffff82111761156857604052565b67ffffffffffffffff811161156857601f01601f191660200190565b60206003198201126104d15760043567ffffffffffffffff81116104d157816023820112156104d1578060040135906118d28261187e565b926118e0604051948561185c565b828452602483830101116104d157815f92602460209301838601378301015290565b90600182811c92168015611930575b602083101461191c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611911565b604051905f825f549161194c83611902565b80835292600181169081156119bc5750600114611972575b6119709250038361185c565b565b505f80805290915f516020611b825f395f51905f525b8183106119a057505090602061197092820101611964565b6020919350806001915483858901015201910190918492611988565b6020925061197094915060ff191682840152151560051b820101611964565b9190820180921161157c57565b9190820391821161157c57565b908160209103126104d157516001600160a01b03811681036104d15790565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611a4a57602052637f5e9f20600c525f526034600c205490565b50505f1990565b908160209103126104d1575180151581036104d15790565b604051630ff3c28b60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290602081600481875afa908115611164575f91611b62575b50158015611b56575b611b5157604051630abfa01d60e31b81526001600160a01b0392831660048201529116602482015230604482015290602090829060649082905afa908115611164575f91611b22575b5015611b1357565b631e8272b760e11b5f5260045ffd5b611b44915060203d602011611b4a575b611b3c818361185c565b810190611a51565b5f611b0b565b503d611b32565b505050565b5060ff60095416611ac2565b611b7b915060203d602011611b4a57611b3c818361185c565b5f611ab956fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a2646970667358221220d9ad369de16877190a1a2d44730256d40b829feec88eadf1cf49a84c252111c364736f6c634300081e0033a26469706673582212205de8bd062b99c3e8d8d82d729689788a0ae4ab27e72647de3cf1baf61f40e99d64736f6c634300081e0033000000000000000000000000bd216513d74c8cf14cf4747e6aaa6420ff64ee9e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9000000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af00000000000000000000000000000000000044a361ae3cac094c9d1b14eece97000000000000000000000000019817ad02a31b990433542097be29d97613e8cb