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
0x608080604052346015576151fb908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816395c3385614610196575063ef34f29114610032575f80fd5b3461019257602073ffffffffffffffffffffffffffffffffffffffff6101366100bb61005d36610258565b929186949194614eba916100e76040519661007a848601896102ca565b8488528388019461030c8639604051968791858301948590929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866102ca565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102ca565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526101866075826102ca565b51902016604051908152f35b5f80fd5b34610192576101a436610258565b92919092614eba908184019284841067ffffffffffffffff85111761022b5784936101f59361030c863973ffffffffffffffffffffffffffffffffffffffff91821681529116602082015260400190565b03905ff580156102205760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101925760043573ffffffffffffffffffffffffffffffffffffffff8116810361019257906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036101925790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761022b5760405256fe60a06040523461033257604051601f614eba38819003918201601f19168301916001600160401b03831184841017610336578084926040948552833981010312610332578051906001600160a01b038216820361033257602001516001600160a01b03811691828203610332576080525f6101a061007b61034a565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100d961034a565b600181528260208201528260408201528260608201528260808201528260a0820152600160c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152015261200030161515600114801590610325575b8015610318575b801561030b575b80156102fe575b80156102f1575b80156102e1575b80156102d5575b80156102c9575b80156102bd575b80156102b1575b80156102a5575b8015610299575b801561028d575b61027a578115610267575f80546001600160a01b03198116841782556101f393916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101ed8161036a565b506103e0565b506040516149e69081610474823960805181818161029701528181610482015281816105aa015281816108160152818161089301528181610dee01528181610e700152818161159b01528181611eee01528181611f8d0152818161218701528181613b1a01528181613c7a01526146180152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610193565b5060023016151561018c565b50600430161515610185565b5060083016151561017e565b50601030161515610177565b50602030161515610170565b50604030161515610169565b5060803016151560011415610162565b506101003016151561015b565b5061020030161515610154565b506104003016151561014d565b5061080030161515610146565b506110003016151561013f565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761033657604052565b6001600160a01b0381165f9081525f80516020614e7a833981519152602052604090205460ff166103db576001600160a01b03165f8181525f80516020614e7a83398151915260205260408120805460ff191660011790553391905f80516020614e5a8339815191528180a4600190565b505f90565b6001600160a01b0381165f9081525f80516020614e9a833981519152602052604090205460ff166103db576001600160a01b03165f8181525f80516020614e9a83398151915260205260408120805460ff191660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775905f80516020614e5a8339815191529080a460019056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461265e575080631379c5d11461220857806321d0ee701461216a578063248a9ca3146121d5578063259982e51461216a5780632f2ff15d1461212c57806336568abe146120cf5780633b63294614611f5b578063575e24b414611e525780635a530641146117a35780635e35359e146115e95780636c2bbe7e14610dcf5780636fe7e6eb1461153a578063715018a6146114cb57806375b238fc1461149157806379502c55146113f65780638cebd942146113a75780638da5cb5b1461138257806391d148541461133857806391dd734614610e3c5780639f063efc14610dcf578063a217fddf14610db5578063ac3267ff14610864578063b47b2fb11461077a578063b6a8b0fa14610279578063c4e833ce14610613578063d547741f146105ce578063dc4c90d31461058b578063dc98354e1461042b578063e11822091461030d578063e1b4af6914610279578063f0a56fc81461023f5763f2fde38b14610187575f80fd5b3461023b57602060031936011261023b576001600160a01b036101a86126fc565b6101b06143cd565b16801561020f576001600160a01b035f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b5f80fd5b3461023b575f60031936011261023b5760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b3461023b5761028736612c0c565b5050505050506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b57600319360160c0811261023b5760a01361023b5760a4356001600160a01b03811680820361023b57610342612f72565b156103a75760a061035236612b14565b205f52600860205260405f20907fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff000083549260101b1691161790555f80f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c7469706c696572206d7573742062652067726561746572207468616e2060448201527f30000000000000000000000000000000000000000000000000000000000000006064820152fd5b3461023b5760e060031936011261023b576104446126fc565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261023b57610477612712565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5576040516104b481612a74565b6024356001600160a01b038116810361023b5781526044356001600160a01b038116810361023b57602082015260643562ffffff8116810361023b5760408201526084358060020b810361023b57606082015260a435906001600160a01b038216820361023b57608081019190915260a090205f9081526008602090815260409182902080547fffffffffffffffffffff000000000000000000000000000000000000000000ff1663044c010017905590517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b3461023b575f60031936011261023b5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461023b57604060031936011261023b576106116004356105ed612728565b9061060c610607825f526001602052600160405f20015490565b612ffa565b613101565b005b3461023b575f60031936011261023b575f6101a060405161063381612a57565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c0602060405161069681612a57565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f86526101408901965f88526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461023b5761016060031936011261023b576107946126fc565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261023b5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261023b576101443567ffffffffffffffff811161023b5761080a903690600401612752565b50506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b5760e060031936011261023b5761087e36612b14565b60a4359060c43561088d6143cd565b60a082207f0000000000000000000000000000000000000000000000000000000000000000916fffffffffffffffffffffffffffffffff6108ce8385614438565b16918215610d3157610909916001600160a01b038651166001600160a01b03600554161496875f14610d2a5780975b15610d225750936131a4565b5050506fffffffffffffffffffffffffffffffff61093f848761092a613256565b94620d89b495610939876135f2565b91613963565b16918211610c9e5761095661099f92600f0b612d59565b60405191610963836129f2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c83526020830152600f0b60408201525f606082015283613a17565b908160801d5f81600f0b135f14610c96576fffffffffffffffffffffffffffffffff16915b5f81600f0b135f14610c8e576fffffffffffffffffffffffffffffffff16935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111610bdd578210610c0a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111610bdd578310610b59576001600160a01b03602081845116930151169181610ae7575b505081610a6657005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252602090829060449082905f905af18015610adc57610ab457005b6106119060203d602011610ad5575b610acd8183612a90565b810190612d88565b503d610ac3565b6040513d5f823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252602090829060449082905f905af18015610adc57610b3a575b80610a5d565b610b529060203d602011610ad557610acd8183612a90565b5082610b34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e73756666696369656e7420746f6b656e31207769746864726177616c206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e73756666696369656e7420746f6b656e30207769746864726177616c206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b505f936109e4565b505f916109c4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5769746864726177616c20616d6f756e74206578636565647320617661696c6160448201527f626c65206c6971756964697479000000000000000000000000000000000000006064820152fd5b9050936131a4565b81976108fd565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f206c697175696469747920617661696c61626c6520666f7220776974686460448201527f726177616c0000000000000000000000000000000000000000000000000000006064820152fd5b3461023b575f60031936011261023b5760206040515f8152f35b3461023b57610ddd36612820565b505050505050506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b57602060031936011261023b5760043567ffffffffffffffff811161023b57610e6d903690600401612752565b907f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b038316908133036112da57820192828403610140811261023b5760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40610ef860405197610ee489612a3b565b610eed8861273e565b895260208801612b9b565b9260208801938452011261023b5761012060405194610f16866129f2565b610f2260c082016128d6565b8652610f3060e082016128d6565b60208701526101008101356040870152013560608501528360408601528051946040602095815197610f62888a612a90565b5f8952610f9b8351998a9384937f5a6bcfda00000000000000000000000000000000000000000000000000000000855260048501612cc8565b03815f885af1958615610adc575f9661129f575b506001600160a01b039051169051918560801d600f0b928587600f0b6001600160a01b0383511692828101936001600160a01b03855116975f81125f146112035793610ffd61104b9561440c565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038c16600482015260248101829052959092869182905f9082906044820190565b03925af1918215610adc57866001600160a01b0389928d97611074966111ed575b5051166146e0565b5f81121561114557956110896110d89761440c565b9586915f604051809a819582947f095ea7b300000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115610adc576110fc956001600160a01b039261112a575051166146e0565b6040519181830152808252611112604083612a90565b611126604051928284938452830190612ad1565b0390f35b61114090883d8a11610ad557610acd8183612a90565b61106c565b94955f861361115b575b505050505050506110fc565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039190911660048201526024810186905295869060449082905f905af1908115610adc576111c6956001600160a01b03926111d2575b505116614668565b8280808080858161114f565b6111e890883d8a11610ad557610acd8183612a90565b6111be565b61114090893d8b11610ad557610acd8183612a90565b905f8213611214575b505050611074565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481018390529490859060449082905f905af1918215610adc57866001600160a01b0389928d976112819661128957505116614668565b89808061120c565b6111e890893d8b11610ad557610acd8183612a90565b6001600160a01b039196506112cb9060403d6040116112d3575b6112c38183612a90565b810190612cb2565b509590610faf565b503d6112b9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b3461023b57604060031936011261023b57611351612728565b6004355f5260016020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b3461023b575f60031936011261023b5760206001600160a01b035f5416604051908152f35b3461023b57602060031936011261023b576004355f526008602052606060405f20546001600160a01b036040519160ff81161515835260ff8160081c161515602084015260101c166040820152f35b3461023b575f60031936011261023b576001600160a01b03600254166001600160a01b0360035416906001600160a01b03600454166114876001600160a01b0360055416604051906114528261144b81612935565b0383612a90565b6001600160a01b036007541693604051968796875260208701526040860152606085015260c0608085015260c0840190612ad1565b9060a08301520390f35b3461023b575f60031936011261023b5760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b3461023b575f60031936011261023b576114e36143cd565b5f6001600160a01b0381547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461023b5761010060031936011261023b576115546126fc565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261023b57611587612712565b506115906128c6565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b57606060031936011261023b576116026126fc565b61160a612728565b906001600160a01b036044359261161f6143cd565b16916040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa908115610adc575f91611771575b508111611713576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039490941660248301526044808301939093529181525f91906116c2606482612a90565b519082855af115610adc575f513d61170a5750803b155b6116df57005b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600114156116d9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d60201161179b575b8161178c60209383612a90565b8101031261023b575184611664565b3d915061177f565b3461023b57602060031936011261023b5760043567ffffffffffffffff811161023b5780600401908036039060c060031983011261023b576117e36143cd565b6001600160a01b036117f484612c8f565b16151580611e35575b80611e18575b80611dfb575b15611d9d576040519260208401602081526001600160a01b0361182b8361273e565b16604086015260248301906001600160a01b036118478361273e565b16606087015260448401926001600160a01b036118638561273e565b16608088015260648501916001600160a01b0361187f8461273e565b1660a08901527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd6084870135970187121561023b5785870197602460048a0135990167ffffffffffffffff8a1161023b57893603811361023b57899060c0830160c0905281610100840152610120830137888101610120015f90528060a48801996119098b61273e565b6001600160a01b031660e0830152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810103610120017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526119729082612a90565b51902092604051936020850160208152600254956001600160a01b03871660408201526003546001600160a01b031660608201526004546001600160a01b031660808201526005546001600160a01b031660a082015260c0810160c090528061010081016119df90612935565b6007546001600160a01b031660e0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252611a209082612a90565b51902014611d3f576001600160a01b039485611a75611aa493611ad3977fffffffffffffffffffffffff000000000000000000000000000000000000000084611a698199612c8f565b16911617600255612c8f565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355612c8f565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455612c8f565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060055416176005550160048101359067ffffffffffffffff821161023b57813603602482011361023b57611b2a6006546128e4565b601f8111611c9e575b505f90601f8311600114611bcb5791806001600160a01b039492611b8f945f92611bbd575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600655612c8f565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060075416176007555f80f35b016024013590508580611b58565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f925f5b818110611c835750926001928592611b8f966001600160a01b03989610611c47575b505050811b01600655612c8f565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c19169055858080611c39565b60248484010135855560019094019360209283019201611c17565b60065f52601f830160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f019060208410611d17575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b818110611d0c5750611b33565b5f8155600101611cff565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9150611cd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b03611e1060648301612c8f565b161515611809565b506001600160a01b03611e2d60448301612c8f565b161515611803565b506001600160a01b03611e4a60248301612c8f565b1615156117fd565b3461023b5761014060031936011261023b57611e6c6126fc565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261023b5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261023b576101243567ffffffffffffffff811161023b57611ee2903690600401612752565b50506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e557606062ffffff611f22613c52565b907fffffffff00000000000000000000000000000000000000000000000000000000604094939451941684526020840152166040820152f35b3461023b5761014060031936011261023b57611f75612f72565b6020611f8036612b14565b61205560a08220611fb1817f00000000000000000000000000000000000000000000000000000000000000006131a4565b50505090805f52600885526001600160a01b0360405f205460101c161561205e575b506fffffffffffffffffffffffffffffffff61200b611ff0613256565b620d89b493611ffe856135f2565b60c4359260a43592613963565b16926040519161201a836129f2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c83528583015283600f0b60408301525f6060830152613a17565b50604051908152f35b805f526008855260405f206303e800007fffffffffffffffffffff0000000000000000000000000000000000000000ffff8254161790555f526008845260405f206101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff82541617905584611fd3565b3461023b57604060031936011261023b576120e8612728565b336001600160a01b038216036121045761061190600435613101565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b57604060031936011261023b5761061160043561214b612728565b90612165610607825f526001602052600160405f20015490565b613054565b3461023b5761217836612780565b50505050506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102e5577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461023b57602060031936011261023b5760206122006004355f526001602052600160405f20015490565b604051908152f35b3461023b57608060031936011261023b576122216126fc565b602435906fffffffffffffffffffffffffffffffff821680920361023b578115612600576001600160a01b031690811561257c5761226181606435612da0565b8083111561251e5761227b6001600160a01b039184612c82565b169061229d61228a8483612e59565b9161229785604435612e59565b90612c82565b9081156124c0576001600160a01b03916122b691612da0565b16918082101561243d578211156123b9576401000276a3811061235b5773fffd8963efd1fc6a506488495d951d5263988d2682116122fd5760409182519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f557070657220626f756e642061626f7665206d6178696d756d000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c6f77657220626f756e642062656c6f77206d696e696d756d000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f557070657220626f756e64206d7573742062652067726561746572207468616e60448201527f20746172676574000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c6f77657220626f756e64206d757374206265206c657373207468616e20746160448201527f72676574000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420757070657220626f756e642064656e6f6d696e61746f72006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206c6f77657220626f756e64000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f546172676574207072696365206d75737420626520677265617465722074686160448201527f6e203000000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4c6971756964697479206d7573742062652067726561746572207468616e20306044820152fd5b3461023b57602060031936011261023b57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361023b57817f7965db0b00000000000000000000000000000000000000000000000000000000602093149081156126d2575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836126cb565b600435906001600160a01b038216820361023b57565b60c435906001600160a01b038216820361023b57565b602435906001600160a01b038216820361023b57565b35906001600160a01b038216820361023b57565b9181601f8401121561023b5782359167ffffffffffffffff831161023b576020838186019501011161023b57565b9061016060031983011261023b576004356001600160a01b038116810361023b579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261023b5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261023b5760c491610144359067ffffffffffffffff821161023b5761281c91600401612752565b9091565b906101a060031983011261023b576004356001600160a01b038116810361023b579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261023b5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261023b5760c49161014435916101643591610184359067ffffffffffffffff821161023b5761281c91600401612752565b60e435908160020b820361023b57565b35908160020b820361023b57565b90600182811c9216801561292b575b60208310146128fe57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f3565b6006545f9291612944826128e4565b80825291600181169081156129b8575060011461295f575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b83831061299e575060209250010190565b60018160209294939454838587010152019101919061298d565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b6080810190811067ffffffffffffffff821117612a0e57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff821117612a0e57604052565b6101c0810190811067ffffffffffffffff821117612a0e57604052565b60a0810190811067ffffffffffffffff821117612a0e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a0e57604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60031960a091011261023b5760405190612b2d82612a74565b816004356001600160a01b038116810361023b5781526024356001600160a01b038116810361023b57602082015260443562ffffff8116810361023b5760408201526064358060020b810361023b576060820152608435906001600160a01b038216820361023b5760800152565b91908260a091031261023b57604051612bb381612a74565b8092612bbe8161273e565b8252612bcc6020820161273e565b602083015260408101359062ffffff8216820361023b576080612c079181936040860152612bfc606082016128d6565b60608601520161273e565b910152565b61012060031982011261023b576004356001600160a01b038116810361023b579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83011261023b5760249160c4359160e43591610104359067ffffffffffffffff821161023b5761281c91600401612752565b91908203918211610bdd57565b356001600160a01b038116810361023b5790565b9081602091031261023b575190565b919082604091031261023b576020825192015190565b612d48612d569493612d1a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a08501526020820151900b60c0840152604081015160e084015260600151610100830152565b816101208201520190612ad1565b90565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610bdd575f0390565b9081602091031261023b5751801515810361023b5790565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561023b5714612e52576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c01000000000000000000000000111561023b5714612eca576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561023b5714612f6a579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b335f9081527f7ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf89602052604090205460ff1615612faa57565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f52600160205260405f206001600160a01b0333165f5260205260ff60405f205416156130255750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f205416155f146130fb57805f52600160205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f2054165f146130fb57805f52600160205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b60209060246131bb6001600160a01b0395946144f4565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa918215610adc575f92613222575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d60201161324e575b8161323e60209383612a90565b8101031261023b5751905f6131fc565b3d9150613231565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c60ff1d7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c810118620d89e881116135a65763ffffffff90600181167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018906002811661358a575b6004811661356e575b60088116613552575b60108116613536575b6020811661351a575b604081166134fe575b608081166134e2575b61010081166134c6575b61020081166134aa575b610400811661348e575b6108008116613472575b6110008116613456575b612000811661343a575b614000811661341e575b6180008116613402575b6201000081166133e6575b6202000081166133cb575b6204000081166133b0575b620800001661339a575b0160201c90565b6b048a170391f7dc42444e8fa20260801c613393565b6d2216e584f5fa1ea926041bedfe9890910260801c90613389565b906e5d6af8dedb81196699c329225ee6040260801c9061337e565b906f09aa508b5b7a84e1c677de54f3e99bc90260801c90613373565b906f31be135f97d08fd981231505542fcfa60260801c90613368565b906f70d869a156d2a1b890bb3df62baf32f70260801c9061335e565b906fa9f746462d870fdf8a65dc1f90e061e50260801c90613354565b906fd097f3bdfd2022b8845ad8f792aa58250260801c9061334a565b906fe7159475a2c29b7443b29c7fa6e889d90260801c90613340565b906ff3392b0822b70005940c7a398e4b70f30260801c90613336565b906ff987a7253ac413176f2b074cf7815e540260801c9061332c565b906ffcbe86c7900a88aedcffc83b479aa3a40260801c90613322565b906ffe5dee046a99a2a811c461f1969c30530260801c90613318565b906fff2ea16466c96a3843ec78b326b528610260801c9061330f565b906fff973b41fa98c081472e6896dfb254c00260801c90613306565b906fffcb9843d60f6159c9db58835c9266440260801c906132fd565b906fffe5caca7e10e4e61c3624eaa0941cd00260801c906132f4565b906ffff2e50f5f656932ef12357cf3c7fdcc0260801c906132eb565b906ffff97272373d413259a46990580e213a0260801c906132e2565b7f8b86327a000000000000000000000000000000000000000000000000000000005f527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c60045260245ffd5b60020b908160ff1d82810118620d89e881116139375763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661391b575b600481166138ff575b600881166138e3575b601081166138c7575b602081166138ab575b6040811661388f575b60808116613873575b6101008116613857575b610200811661383b575b610400811661381f575b6108008116613803575b61100081166137e7575b61200081166137cb575b61400081166137af575b6180008116613793575b620100008116613777575b62020000811661375c575b620400008116613741575b6208000016613728575b5f12613701570160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613393565b6b048a170391f7dc42444e8fa290910260801c906136f4565b6d2216e584f5fa1ea926041bedfe9890920260801c916136ea565b916e5d6af8dedb81196699c329225ee6040260801c916136df565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916136d4565b916f31be135f97d08fd981231505542fcfa60260801c916136c9565b916f70d869a156d2a1b890bb3df62baf32f70260801c916136bf565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916136b5565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916136ab565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916136a1565b916ff3392b0822b70005940c7a398e4b70f30260801c91613697565b916ff987a7253ac413176f2b074cf7815e540260801c9161368d565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613683565b916ffe5dee046a99a2a811c461f1969c30530260801c91613679565b916fff2ea16466c96a3843ec78b326b528610260801c91613670565b916fff973b41fa98c081472e6896dfb254c00260801c91613667565b916fffcb9843d60f6159c9db58835c9266440260801c9161365e565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613655565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161364c565b916ffff97272373d413259a46990580e213a0260801c91613643565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b936001600160a01b0383166001600160a01b03831611613a0f575b6001600160a01b038581169590831686116139a1575050612d569350614570565b565b92909391946001600160a01b038216115f14613a035782916139c7916139cd9594614570565b9361453a565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f146139fe575090565b905090565b915050612d569261453a565b90919061397e565b5f90613ac1613b0d9360408051613a2d81612a3b565b3381526020810194855201908152613a90604051933360208601525160408501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b60e08501526020820151900b610100840152604081015161012084015260600151610140830152565b6101408152613ad261016082612a90565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190612ad1565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610adc575f91613b63575b506020815191818082019384920101031261023b575190565b90503d805f833e613b748183612a90565b81019060208183031261023b5780519067ffffffffffffffff821161023b570181601f8201121561023b5780519067ffffffffffffffff8211612a0e5760405192613be7601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185612a90565b8284526020838301011161023b57815f9260208093018386015e830101525f613b4a565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317610bdd57565b60a0613c5f366024612b9b565b20805f52600860205260ff60405f205460081c16156143a4577f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff613cb48383614438565b1691821561437957613cc681836131a4565b505091805f5260086020526001600160a01b0360405f205460101c16155f1461435957506001600160a01b038061044c925b16911692838202938285041482151715610bdd576001600160a01b036103e88195041692613d83613d2f620d89b497600f0b612d59565b60405190613d3c826129f2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8252886020830152600f0b60408201525f6060820152613d7e366024612b9b565b6145c0565b9085613d90366024612b9b565b93169260405194613da086612a3b565b86108552613e6260208601917f80000000000000000000000000000000000000000000000000000000000000008352613e8b604088019389855260209a8b9560405192613ded8885612a90565b5f84526040519b8c9788977ff3cd914c00000000000000000000000000000000000000000000000000000000895260048901906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c4860152511660e4840152610120610104840152610124830190612ad1565b03815f875af1938415610adc575f94614329575b50603c9060401b600a0b057fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061430f575b1561023b57600f0b678000000000000000680100000000000000008260401d600f0b9207600f0b12156142a3575b603c9060020b028060020b908103610bdd57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618811215614235575060020b603c01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217610bdd57935b608435968760020b9586890361023b5760020b9286840393627fffff85137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000861217610bdd5787017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317610bdd576140d36140c88a6fffffffffffffffffffffffffffffffff6140ea966140dd956140f49a7f12519fb38f6e5af830d800923f1b4e756174c53a1a5fbd5384706bef6bc3ded75d7f334352b7316c99b5eb1590419dc5053fce159a8f4a83ecf755d907286540c5445d61407a61405d613256565b614066836135f2565b9a8960801d9b8c9286808d16941692613963565b9060405193614088856129f2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c855284015216600f0b60408201525f6060820152613d7e366024612b9b565b948860801d90613c0b565b8460801d90613c0b565b95600f0b90600f0b613c0b565b90600f0b90613c0b565b92604051906141038683612a90565b5f8252604051967f234266d70000000000000000000000000000000000000000000000000000000088526024356001600160a01b03811680910361023b5760048901526044356001600160a01b03811680910361023b57602489015260643562ffffff811680910361023b57604489015250606487015260a435926001600160a01b03841680940361023b57866141d28195936fffffffffffffffffffffffffffffffff8998815f96869860848801521660a48601521660c484015261010060e4840152610104830190612ad1565b03925af18015610adc5761420b575b50507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b81813d831161422e575b61421f8183612a90565b8101031261023b57515f6141e1565b503d614215565b620d89e88196929613614249575b50613f74565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc491955001627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217610bdd57935f614243565b6001017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff82131715613f02577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315613ed4565b9093508581813d8311614352575b6143418183612a90565b8101031261023b575192603c613e9f565b503d614337565b5f5260086020526001600160a01b03808060405f205460101c1692613cf8565b5050507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b6001600160a01b035f541633036143e057565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b7f80000000000000000000000000000000000000000000000000000000000000008114610bdd575f0390565b90614442906144f4565b60038101809111610bdd576001600160a01b0391602460209260405194859384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa8015610adc575f906144b2575b6fffffffffffffffffffffffffffffffff91501690565b506020813d6020116144ec575b816144cc60209383612a90565b8101031261023b576fffffffffffffffffffffffffffffffff905161449b565b3d91506144bf565b604051602081019182526006604082015260408152614514606082612a90565b51902090565b906001600160a01b03809116911603906001600160a01b038211610bdd57565b916001600160a01b0361455e612d5694614565948381168483161161456a5761451a565b1690612da0565b614935565b9061451a565b9161456591612d56936001600160a01b0382166001600160a01b038216116145ba575b6145b36001600160a01b03916145ad838516848316612e59565b9361451a565b1691612ed3565b90614593565b906040908151926145d2602085612a90565b5f845261460b835194859384937f5a6bcfda00000000000000000000000000000000000000000000000000000000855260048501612cc8565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610adc575f9161464b575090565b614664915060403d6040116112d3576112c38183612a90565b5090565b9192906001600160a01b0316803b1561023b575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610adc576146d65750565b5f61399f91612a90565b9091906001600160a01b0316806147665750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610adc5761473b5750565b61475c9060203d60201161475f575b6147548183612a90565b810190612ca3565b50565b503d61474a565b9092916001600160a01b031691823b1561023b57604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf18015610adc57614919575b506001600160a01b031684308214614898576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561488d57916020918493614870575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115614864575061473b5750565b604051903d90823e3d90fd5b61488690833d8511610ad557610acd8183612a90565b505f614825565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af1801561488d579160209184936148fc575b50614827565b61491290833d8511610ad557610acd8183612a90565b505f6148f6565b6149269195505f90612a90565b5f936001600160a01b036147be565b906fffffffffffffffffffffffffffffffff821691820361495257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6c6971756964697479206f766572666c6f7700000000000000000000000000006044820152fdfea2646970667358221220711bc2890518607753a2a661e5d1192a64a7af4a87766d4312918c5c1c46f53d64736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4950efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694a2646970667358221220dbdfece406143423d07e993109d8efe2750b49f8af47f5a12562720f9632b6f164736f6c634300081a0033