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