0 txs
0 calls
constructor
No constructor.
functions
predictAddress
viewfunction predictAddress(address poolManager, bytes32 salt) view returns (address predicted)
deploy
nonpayablefunction deploy(address poolManager, bytes32 salt) returns (address hook)
events
No events.
errors
No errors.
creation bytecode
0x608080604052346015576147fa908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816332c02a1414610144575063cb19394214610032575f80fd5b3461014057602073ffffffffffffffffffffffffffffffffffffffff610057366101f4565b60405190916100e461453e61006e87820185610245565b80845286840190610287823986604051938782860191168152818552610095604086610245565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610245565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b60218401526035830152605582015260558152610134607582610245565b51902016604051908152f35b5f80fd5b3461014057610152366101f4565b919061453e9081830183811067ffffffffffffffff8211176101c75773ffffffffffffffffffffffffffffffffffffffff849260209461028785391681520301905ff580156101bc5760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101405760043573ffffffffffffffffffffffffffffffffffffffff81168103610140579060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101c75760405256fe60a0604052346102ab57604051601f61453e38819003918201601f19168301916001600160401b038311848410176102af578084926020946040528339810103126102ab57516001600160a01b03811681036102ab576080525f6101a06100646102c3565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100c26102c3565b600181528260208201528260408201528260608201528260808201528260a0820152600160c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061029e575b8015610291575b8015610284575b8015610277575b801561026a575b801561025a575b801561024e575b8015610242575b8015610236575b801561022a575b801561021e575b8015610212575b8015610206575b6101f35760405161425a90816102e48239608051818181610121015281816103060152818161042e01528181610655015281816106c20152818161074401528181610c7c015281816115be0152818161166a0152818161194801528181611bd60152818161332a015281816135520152613e8c0152f35b630732d7b560e51b5f523060045260245ffd5b5060013016151561017c565b50600230161515610175565b5060043016151561016e565b50600830161515610167565b50601030161515610160565b50602030161515610159565b50604030161515610152565b506080301615156001141561014b565b5061010030161515610144565b506102003016151561013d565b5061040030161515610136565b506108003016151561012f565b5061100030161515610128565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b038111838210176102af5760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081631379c5d114611c245750806321d0ee7014611bb9578063259982e514611bb95780633b632946146119255780634de0d32b1461162b578063575e24b4146115225780635a53064114610e7d5780635e35359e14610cca5780636c2bbe7e146106a35780636fe7e6eb14610c1b57806379502c5514610b815780638cebd94214610b3257806391dd7346146107105780639f063efc146106a3578063b47b2fb1146105b9578063b6a8b0fa14610103578063c4e833ce14610452578063dc4c90d31461040f578063dc98354e146102af578063e11822091461019b5763e1b4af6914610103575f80fd5b346101975761011136612589565b5050505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461019757600319360160c081126101975760a013610197576101bc6120a5565b6001600160a01b0381161561022b5760a06101d63661229a565b205f52600660205260405f20907fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff000083549260101b1691161790555f80f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c7469706c696572206d7573742062652067726561746572207468616e2060448201527f30000000000000000000000000000000000000000000000000000000000000006064820152fd5b346101975760e0600319360112610197576102c8612079565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610197576102fb61208f565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f576040516103388161221f565b6024356001600160a01b03811681036101975781526044356001600160a01b038116810361019757602082015260643562ffffff811681036101975760408201526084358060020b810361019757606082015260a435906001600160a01b038216820361019757608081019190915260a090205f9081526006602090815260409182902080547fffffffffffffffffffff000000000000000000000000000000000000000000ff1663044c010017905590517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b34610197575f6003193601126101975760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610197575f600319360112610197575f6101a060405161047281612202565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c060206040516104d581612202565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f86526101408901965f88526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461019757610160600319360112610197576105d3612079565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101975760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610197576101443567ffffffffffffffff8111610197576106499036906004016120cf565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610197576106b136612392565b505050505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101975760206003193601126101975760043567ffffffffffffffff8111610197576107419036906004016120cf565b907f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b03831690813303610ad45782019282840361014081126101975760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff406107cc604051976107b8896121e6565b6107c1886120bb565b895260208801612321565b9260208801938452011261019757610120604051946107ea8661219d565b6107f660c0820161228c565b865261080460e0820161228c565b60208701526101008101356040870152013560608501528360408601528051946040602095815197610836888a61223b565b5f895261086f8351998a9384937f5a6bcfda000000000000000000000000000000000000000000000000000000008552600485016126b9565b03815f885af1958615610a1e575f96610a99575b506001600160a01b039051169051918560801d600f0b9286600f0b946001600160a01b0382511690878301926001600160a01b0384511696895f82125f14610a7157506108cf90613ca5565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052938a90859060449082905f905af1918215610a1e57866001600160a01b0389928d9761093e96610a5b575b505116613f54565b5f871215610a29576109526109a197613ca5565b9586915f604051809a819582947f095ea7b300000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115610a1e576109c5956001600160a01b03926109f357505116613f54565b60405191818301528082526109db60408361223b565b6109ef604051928284938452830190612546565b0390f35b610a1290883d8a11610a17575b610a0a818361223b565b810190612639565b610936565b503d610a00565b6040513d5f823e3d90fd5b50509392505f8313610a3f575b505050506109c5565b6001600160a01b03610a52945116613edc565b82808080610a36565b610a1290893d8b11610a1757610a0a818361223b565b93915086865f8313610a87575b5050505061093e565b610a9093613edc565b89808686610a7e565b6001600160a01b03919650610ac59060403d604011610acd575b610abd818361223b565b8101906126a3565b509590610883565b503d610ab3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b34610197576020600319360112610197576004355f526006602052606060405f20546001600160a01b036040519160ff81161515835260ff8160081c161515602084015260101c166040820152f35b34610197575f600319360112610197576001600160a01b035f54166001600160a01b0360015416906001600160a01b0360025416610c116001600160a01b036003541660405190610bdc82610bd581612489565b038361223b565b6001600160a01b036005541693604051968796875260208701526040860152606085015260c0608085015260c0840190612546565b9060a08301520390f35b346101975761010060031936011261019757610c35612079565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261019757610c6861208f565b50610c7161227c565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461019757606060031936011261019757610ce3612079565b602435906001600160a01b038216809203610197576044356040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa908115610a1e575f91610e4b575b508111610ded576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039490941660248301526044808301939093529181525f9190610d9c60648261223b565b519082855af115610a1e575f513d610de45750803b155b610db957005b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60011415610db3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d602011610e75575b81610e666020938361223b565b81010312610197575184610d3e565b3d9150610e59565b346101975760206003193601126101975760043567ffffffffffffffff81116101975780600401908036039060c0600319830112610197576001600160a01b03610ec684612680565b16151580611505575b806114e8575b806114cb575b1561146d576040519260208401602081526001600160a01b03610efd836120bb565b16604086015260248301906001600160a01b03610f19836120bb565b16606087015260448401926001600160a01b03610f35856120bb565b16608088015260648501916001600160a01b03610f51846120bb565b1660a08901527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd608487013597018712156101975785870197602460048a0135990167ffffffffffffffff8a1161019757893603811361019757899060c0830160c0905281610100840152610120830137888101610120015f90528060a4880199610fdb8b6120bb565b6001600160a01b031660e0830152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810103610120017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252611044908261223b565b519020926040519360208501602081525f54956001600160a01b03871660408201526001546001600160a01b031660608201526002546001600160a01b031660808201526003546001600160a01b031660a082015260c0810160c090528061010081016110b090612489565b6005546001600160a01b031660e0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526110f1908261223b565b5190201461140f576001600160a01b039485611145611174936111a3977fffffffffffffffffffffffff00000000000000000000000000000000000000008461113a8199612680565b169116175f55612680565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006001541617600155612680565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255612680565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060035416176003550160048101359067ffffffffffffffff8211610197578136036024820113610197576111fa600454612438565b601f811161136e575b505f90601f831160011461129b5791806001600160a01b03949261125f945f9261128d575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600455612680565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060055416176005555f80f35b016024013590508580611228565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b925f5b818110611353575092600192859261125f966001600160a01b03989610611317575b505050811b01600455612680565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c19169055858080611309565b602484840101358555600190940193602092830192016112e7565b60045f52601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190602084106113e7575b601f0160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b8181106113dc5750611203565b5f81556001016113cf565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91506113a5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b036114e060648301612680565b161515610edb565b506001600160a01b036114fd60448301612680565b161515610ed5565b506001600160a01b0361151a60248301612680565b161515610ecf565b34610197576101406003193601126101975761153c612079565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126101975760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c360112610197576101243567ffffffffffffffff8111610197576115b29036906004016120cf565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f57606062ffffff6115f261352a565b907fffffffff00000000000000000000000000000000000000000000000000000000604094939451941684526020840152166040820152f35b346101975760c0600319360112610197576116453661229a565b61164d6120a5565b9060a08120916fffffffffffffffffffffffffffffffff61168e847f0000000000000000000000000000000000000000000000000000000000000000613427565b1680156118a15761172490845f52600660205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff81541690556116db620d89b491600f0b612651565b604051916116e88361219d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c83526020830152600f0b60408201525f60608201528361318f565b916001600160a01b0360208183511692015116928060801d5f81600f0b135f14611899576fffffffffffffffffffffffffffffffff16905b5f81600f0b135f14611891576fffffffffffffffffffffffffffffffff16915b81611816575b50508061179a575b5f84815260066020526040812055005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152602482015290602090829060449082905f905af18015610a1e576117f7575b808061178a565b61180f9060203d602011610a1757610a0a818361223b565b50816117f0565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810192909252602090829060449082905f905af18015610a1e57611872575b80611782565b61188a9060203d602011610a1757610a0a818361223b565b508461186c565b505f9161177c565b505f9061175c565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f206c697175696469747920617661696c61626c6520666f7220776974686460448201527f726177616c0000000000000000000000000000000000000000000000000000006064820152fd5b3461019757610140600319360112610197576119403661229a565b60a08120905f7f000000000000000000000000000000000000000000000000000000000000000092611972818561291c565b5050509080835260066020526001600160a01b03604084205460101c1615611b46575b5061199e6129ce565b90620d89b4916020611a226119c66119b586612d6a565b9460a435809660c4359687936130db565b976001600160a01b03808951169116946040519788809481937f095ea7b30000000000000000000000000000000000000000000000000000000083528960048401602090939291936001600160a01b0360408201951681520152565b03925af1918215610a1e57611a9494602093611b2b575b506001600160a01b038387015116905f6040518097819582947f095ea7b300000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af18015610a1e57602094611b07936fffffffffffffffffffffffffffffffff92611b10575b50169260405191611acc8361219d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c83528583015283600f0b60408301525f606083015261318f565b50604051908152f35b611b2690873d8911610a1757610a0a818361223b565b611abc565b611b4190843d8611610a1757610a0a818361223b565b611a39565b8083526006602052604083206303e800007fffffffffffffffffffff0000000000000000000000000000000000000000ffff82541617905582526006602052604082206101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff82541617905584611995565b3461019757611bc7366120fd565b50505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361016f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461019757608060031936011261019757611c3d612079565b602435916fffffffffffffffffffffffffffffffff831680930361019757821561201d57506001600160a01b0316908115611f9957611c7e8160643561274a565b80831115611f3b57611c986001600160a01b0391846125ff565b1690611cba611ca78483612803565b91611cb485604435612803565b906125ff565b908115611edd576001600160a01b0391611cd39161274a565b169180821015611e5a57821115611dd6576401000276a38110611d785773fffd8963efd1fc6a506488495d951d5263988d268211611d1a5760409182519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f557070657220626f756e642061626f7665206d6178696d756d000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c6f77657220626f756e642062656c6f77206d696e696d756d000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f557070657220626f756e64206d7573742062652067726561746572207468616e60448201527f20746172676574000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c6f77657220626f756e64206d757374206265206c657373207468616e20746160448201527f72676574000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420757070657220626f756e642064656e6f6d696e61746f72006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206c6f77657220626f756e64000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f546172676574207072696365206d75737420626520677265617465722074686160448201527f6e203000000000000000000000000000000000000000000000000000000000006064820152fd5b807f08c379a0000000000000000000000000000000000000000000000000000000006064925260206004820152602060248201527f4c6971756964697479206d7573742062652067726561746572207468616e20306044820152fd5b600435906001600160a01b038216820361019757565b60c435906001600160a01b038216820361019757565b60a435906001600160a01b038216820361019757565b35906001600160a01b038216820361019757565b9181601f840112156101975782359167ffffffffffffffff8311610197576020838186019501011161019757565b90610160600319830112610197576004356001600160a01b0381168103610197579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126101975760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126101975760c491610144359067ffffffffffffffff821161019757612199916004016120cf565b9091565b6080810190811067ffffffffffffffff8211176121b957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176121b957604052565b6101c0810190811067ffffffffffffffff8211176121b957604052565b60a0810190811067ffffffffffffffff8211176121b957604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176121b957604052565b60e435908160020b820361019757565b35908160020b820361019757565b60031960a091011261019757604051906122b38261221f565b816004356001600160a01b03811681036101975781526024356001600160a01b038116810361019757602082015260443562ffffff811681036101975760408201526064358060020b8103610197576060820152608435906001600160a01b03821682036101975760800152565b91908260a0910312610197576040516123398161221f565b8092612344816120bb565b8252612352602082016120bb565b602083015260408101359062ffffff8216820361019757608061238d91819360408601526123826060820161228c565b6060860152016120bb565b910152565b906101a0600319830112610197576004356001600160a01b0381168103610197579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126101975760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126101975760c49161014435916101643591610184359067ffffffffffffffff821161019757612199916004016120cf565b90600182811c9216801561247f575b602083101461245257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612447565b6004545f929161249882612438565b808252916001811690811561250c57506001146124b3575050565b60045f9081529293509091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8383106124f2575060209250010190565b6001816020929493945483858701015201910191906124e1565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b610120600319820112610197576004356001600160a01b0381168103610197579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8301126101975760249160c4359160e43591610104359067ffffffffffffffff821161019757612199916004016120cf565b9190820391821161260c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90816020910312610197575180151581036101975790565b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461260c575f0390565b356001600160a01b03811681036101975790565b90816020910312610197575190565b9190826040910312610197576020825192015190565b612739612747949361270b83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a08501526020820151900b60c0840152604081015160e084015260600151610100830152565b816101208201520190612546565b90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561019757146127fc576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156101975714612874576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156101975714612914579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b60209060246129336001600160a01b039594613cd1565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa918215610a1e575f9261299a575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d6020116129c6575b816129b66020938361223b565b810103126101975751905f612974565b3d91506129a9565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c60ff1d7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c810118620d89e88111612d1e5763ffffffff90600181167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189060028116612d02575b60048116612ce6575b60088116612cca575b60108116612cae575b60208116612c92575b60408116612c76575b60808116612c5a575b6101008116612c3e575b6102008116612c22575b6104008116612c06575b6108008116612bea575b6110008116612bce575b6120008116612bb2575b6140008116612b96575b6180008116612b7a575b620100008116612b5e575b620200008116612b43575b620400008116612b28575b6208000016612b12575b0160201c90565b6b048a170391f7dc42444e8fa20260801c612b0b565b6d2216e584f5fa1ea926041bedfe9890910260801c90612b01565b906e5d6af8dedb81196699c329225ee6040260801c90612af6565b906f09aa508b5b7a84e1c677de54f3e99bc90260801c90612aeb565b906f31be135f97d08fd981231505542fcfa60260801c90612ae0565b906f70d869a156d2a1b890bb3df62baf32f70260801c90612ad6565b906fa9f746462d870fdf8a65dc1f90e061e50260801c90612acc565b906fd097f3bdfd2022b8845ad8f792aa58250260801c90612ac2565b906fe7159475a2c29b7443b29c7fa6e889d90260801c90612ab8565b906ff3392b0822b70005940c7a398e4b70f30260801c90612aae565b906ff987a7253ac413176f2b074cf7815e540260801c90612aa4565b906ffcbe86c7900a88aedcffc83b479aa3a40260801c90612a9a565b906ffe5dee046a99a2a811c461f1969c30530260801c90612a90565b906fff2ea16466c96a3843ec78b326b528610260801c90612a87565b906fff973b41fa98c081472e6896dfb254c00260801c90612a7e565b906fffcb9843d60f6159c9db58835c9266440260801c90612a75565b906fffe5caca7e10e4e61c3624eaa0941cd00260801c90612a6c565b906ffff2e50f5f656932ef12357cf3c7fdcc0260801c90612a63565b906ffff97272373d413259a46990580e213a0260801c90612a5a565b7f8b86327a000000000000000000000000000000000000000000000000000000005f527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c60045260245ffd5b60020b908160ff1d82810118620d89e881116130af5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116613093575b60048116613077575b6008811661305b575b6010811661303f575b60208116613023575b60408116613007575b60808116612feb575b6101008116612fcf575b6102008116612fb3575b6104008116612f97575b6108008116612f7b575b6110008116612f5f575b6120008116612f43575b6140008116612f27575b6180008116612f0b575b620100008116612eef575b620200008116612ed4575b620400008116612eb9575b6208000016612ea0575b5f12612e79570160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04612b0b565b6b048a170391f7dc42444e8fa290910260801c90612e6c565b6d2216e584f5fa1ea926041bedfe9890920260801c91612e62565b916e5d6af8dedb81196699c329225ee6040260801c91612e57565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91612e4c565b916f31be135f97d08fd981231505542fcfa60260801c91612e41565b916f70d869a156d2a1b890bb3df62baf32f70260801c91612e37565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91612e2d565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91612e23565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612e19565b916ff3392b0822b70005940c7a398e4b70f30260801c91612e0f565b916ff987a7253ac413176f2b074cf7815e540260801c91612e05565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91612dfb565b916ffe5dee046a99a2a811c461f1969c30530260801c91612df1565b916fff2ea16466c96a3843ec78b326b528610260801c91612de8565b916fff973b41fa98c081472e6896dfb254c00260801c91612ddf565b916fffcb9843d60f6159c9db58835c9266440260801c91612dd6565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91612dcd565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91612dc4565b916ffff97272373d413259a46990580e213a0260801c91612dbb565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b936001600160a01b0383166001600160a01b03831611613187575b6001600160a01b038581169590831686116131195750506127479350613d4d565b565b92909391946001600160a01b038216115f1461317b57829161313f916131459594613d4d565b93613d17565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613176575090565b905090565b91505061274792613d17565b9091906130f6565b5f61331d926132d2604051916131a4836121e6565b33835260208301948552604083019081526132a16040956131fb87516131ca898261223b565b600681527f73656e646572000000000000000000000000000000000000000000000000000060208201523390613d9d565b6132486001600160a01b036080835101511688516132198a8261223b565b600d81527f61646472657373546f45746368000000000000000000000000000000000000006020820152613d9d565b6001600160a01b038751955116602086015251868501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b60e08501526020820151900b610100840152604081015161012084015260600151610140830152565b61014081526132e36101608261223b565b8251809481927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190612546565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af191821561341d575f92613374575b505060208151918180820193849201010312610197575190565b9091503d805f833e613386818361223b565b8101906020818303126101975780519067ffffffffffffffff8211610197570181601f820112156101975780519167ffffffffffffffff83116121b9576133f860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116019451948561223b565b8284526020838301011161019757815f9260208093018386015e830101525f8061335a565b50513d5f823e3d90fd5b9061343190613cd1565b6003810180911161260c576001600160a01b0391602460209260405194859384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a1e575f906134a1575b6fffffffffffffffffffffffffffffffff91501690565b506020813d6020116134db575b816134bb6020938361223b565b81010312610197576fffffffffffffffffffffffffffffffff905161348a565b3d91506134ae565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff83131761260c57565b60a0613537366024612321565b20805f52600660205260ff60405f205460081c1615613c7c577f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff61358c8383613427565b16918215613c515761359e818361291c565b505091805f5260066020526001600160a01b0360405f205460101c16155f14613c3157506001600160a01b038061044c925b1691169283820293828504148215171561260c576001600160a01b036103e8819504169261365b613607620d89b497600f0b612651565b604051906136148261219d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8252886020830152600f0b60408201525f6060820152613656366024612321565b613e34565b9085613668366024612321565b93169260405194613678866121e6565b8610855261373a60208601917f80000000000000000000000000000000000000000000000000000000000000008352613763604088019389855260209a8b95604051926136c5888561223b565b5f84526040519b8c9788977ff3cd914c00000000000000000000000000000000000000000000000000000000895260048901906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c4860152511660e4840152610120610104840152610124830190612546565b03815f875af1938415610a1e575f94613c01575b50603c9060401b600a0b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613be7575b1561019757600f0b678000000000000000680100000000000000008260401d600f0b9207600f0b1215613b7b575b603c9060020b028060020b90810361260c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618811215613b0d575060020b603c01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121761260c57935b608435968760020b958689036101975760020b9286840393627fffff85137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000086121761260c5787017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131761260c576139ab6139a08a6fffffffffffffffffffffffffffffffff6139c2966139b5956139cc9a7f12519fb38f6e5af830d800923f1b4e756174c53a1a5fbd5384706bef6bc3ded75d7f334352b7316c99b5eb1590419dc5053fce159a8f4a83ecf755d907286540c5445d6139526139356129ce565b61393e83612d6a565b9a8960801d9b8c9286808d169416926130db565b90604051936139608561219d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c855284015216600f0b60408201525f6060820152613656366024612321565b948860801d906134e3565b8460801d906134e3565b95600f0b90600f0b6134e3565b90600f0b906134e3565b92604051906139db868361223b565b5f8252604051967f234266d70000000000000000000000000000000000000000000000000000000088526024356001600160a01b0381168091036101975760048901526044356001600160a01b03811680910361019757602489015260643562ffffff811680910361019757604489015250606487015260a435926001600160a01b0384168094036101975786613aaa8195936fffffffffffffffffffffffffffffffff8998815f96869860848801521660a48601521660c484015261010060e4840152610104830190612546565b03925af18015610a1e57613ae3575b50507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b81813d8311613b06575b613af7818361223b565b8101031261019757515f613ab9565b503d613aed565b620d89e88196929613613b21575b5061384c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc491955001627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121761260c57935f613b1b565b6001017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156137da577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff8113156137ac565b9093508581813d8311613c2a575b613c19818361223b565b81010312610197575192603c613777565b503d613c0f565b5f5260066020526001600160a01b03808060405f205460101c16926135d0565b5050507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b7f8000000000000000000000000000000000000000000000000000000000000000811461260c575f0390565b604051602081019182526006604082015260408152613cf160608261223b565b51902090565b906001600160a01b03809116911603906001600160a01b03821161260c57565b916001600160a01b03613d3b61274794613d429483811684831611613d4757613cf7565b169061274a565b6141a9565b90613cf7565b91613d4291612747936001600160a01b0382166001600160a01b03821611613d97575b613d906001600160a01b0391613d8a838516848316612803565b93613cf7565b169161287d565b90613d70565b5f91908291613e2160405180926001600160a01b03613dee60208401967f319af333000000000000000000000000000000000000000000000000000000008852604060248601526064850190612546565b91166044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261223b565b51906a636f6e736f6c652e6c6f675afa50565b90604090815192613e4660208561223b565b5f8452613e7f835194859384937f5a6bcfda000000000000000000000000000000000000000000000000000000008552600485016126b9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610a1e575f91613ebf575090565b613ed8915060403d604011610acd57610abd818361223b565b5090565b9192906001600160a01b0316803b15610197575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610a1e57613f4a5750565b5f6131179161223b565b9091906001600160a01b031680613fda5750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610a1e57613faf5750565b613fd09060203d602011613fd3575b613fc8818361223b565b810190612694565b50565b503d613fbe565b9092916001600160a01b031691823b1561019757604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf18015610a1e5761418d575b506001600160a01b03168430821461410c576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af18015614101579160209184936140e4575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156140d85750613faf5750565b604051903d90823e3d90fd5b6140fa90833d8511610a1757610a0a818361223b565b505f614099565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af1801561410157916020918493614170575b5061409b565b61418690833d8511610a1757610a0a818361223b565b505f61416a565b61419a9195505f9061223b565b5f936001600160a01b03614032565b906fffffffffffffffffffffffffffffffff82169182036141c657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6c6971756964697479206f766572666c6f7700000000000000000000000000006044820152fdfea26469706673582212208249b4cb9be409ef9efdb3c5bdebaec362c2531bc45050451cd41450e3c9ef9c64736f6c634300081a0033a2646970667358221220a776b5f532a7ab13a79491b04c8b7ce9f821feb167f7ef9c6cd966c3df7b594664736f6c634300081a0033