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