{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"},{"name":"_weth","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"afterAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"type":"function","name":"getHookPermissions","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Hooks.Permissions","components":[{"name":"beforeInitialize","type":"bool","internalType":"bool"},{"name":"afterInitialize","type":"bool","internalType":"bool"},{"name":"beforeAddLiquidity","type":"bool","internalType":"bool"},{"name":"afterAddLiquidity","type":"bool","internalType":"bool"},{"name":"beforeRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeDonate","type":"bool","internalType":"bool"},{"name":"afterDonate","type":"bool","internalType":"bool"},{"name":"beforeSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterAddLiquidityReturnDelta","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidityReturnDelta","type":"bool","internalType":"bool"}]}],"stateMutability":"pure"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"underlyingCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"function","name":"weth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETH"}],"stateMutability":"view"},{"type":"function","name":"wrapZeroForOne","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"wrapperCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"error","name":"DeltaNotNegative","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"DeltaNotPositive","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"ExactInputNotSupported","inputs":[]},{"type":"error","name":"ExactOutputNotSupported","inputs":[]},{"type":"error","name":"HookNotImplemented","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InvalidPoolFee","inputs":[]},{"type":"error","name":"InvalidPoolToken","inputs":[]},{"type":"error","name":"LiquidityNotAllowed","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]}],"bytecode":{"object":"0x610120604052348015610010575f80fd5b50604051611f42380380611f4283398101604081905261002f916102e2565b6001600160a01b03821660805281815f8261004930610076565b506001600160a01b0391821660a081905290821660c08190521060e05291909116610100525061031a9050565b61016681610161604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c08101825260018082525f60208301819052928201819052606082018390526080820183905260a0820183905260c0820181905260e0820183905261010082018390526101208201839052610140820152610160810182905261018081018290526101a081019190915290565b610169565b50565b805115156120008316151514158061018d5750602081015115156110008316151514155b806101a45750604081015115156108008316151514155b806101bb5750606081015115156104008316151514155b806101d25750608081015115156102008316151514155b806101e9575060a081015115156101008316151514155b806101ff575060c0810151151560808316151514155b80610215575060e0810151151560408316151514155b8061022c5750610100810151151560208316151514155b806102435750610120810151151560108316151514155b8061025a5750610140810151151560088316151514155b806102715750610160810151151560048316151514155b806102885750610180810151151560028316151514155b8061029f57506101a0810151151560018316151514155b156102b5576102b5630732d7b560e51b836102b9565b5050565b815f526001600160a01b03811660045260245ffd5b6001600160a01b0381168114610166575f80fd5b5f80604083850312156102f3575f80fd5b82516102fe816102ce565b602084015190925061030f816102ce565b809150509250929050565b60805160a05160c05160e05161010051611b3c6104065f395f81816101da01528181610e8d015261101201525f818161026f01528181610a5c0152610bfe01525f818161010e01528181610c8c01528181610e6c015261108301525f81816104a101528181610c3301528181610de40152610fbd01525f81816104d40152818161052e015281816105b501528181610634015281816106c301528181610752015281816107d801528181610865015281816108ee01528181610e1001528181610eb401528181611111015281816111c60152818161123a015281816112db01526113880152611b3c5ff3fe6080604052600436106100f2575f3560e01c80639f063efc11610087578063d52f63cf11610057578063d52f63cf14610490578063dc4c90d3146104c3578063dc98354e146104f6578063e1b4af6914610371575f80fd5b80639f063efc146102a1578063b47b2fb114610317578063b6a8b0fa14610371578063c4e833ce14610390575f80fd5b8063575e24b4116100c2578063575e24b4146101fc5780635d5711a51461025e5780636c2bbe7e146102a15780636fe7e6eb146102f8575f80fd5b80630bc6bffc146100fd57806321d0ee701461015a578063259982e5146101aa5780633fc8cef3146101c9575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610165575f80fd5b50610179610174366004611608565b610515565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610151565b3480156101b5575f80fd5b506101796101c4366004611608565b61059c565b3480156101d4575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b348015610207575f80fd5b5061021b61021636600461168f565b610619565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff1690820152606001610151565b348015610269575f80fd5b506102917f000000000000000000000000000000000000000000000000000000000000000081565b6040519015158152602001610151565b3480156102ac575f80fd5b506102c06102bb3660046116e9565b6106a9565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352602083019190915201610151565b348015610303575f80fd5b50610179610312366004611774565b610739565b348015610322575f80fd5b506103366103313660046117d3565b6107be565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b602083015201610151565b34801561037c575f80fd5b5061017961038b366004611854565b61084c565b34801561039b575f80fd5b50610483604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c08101825260018082525f60208301819052928201819052606082018390526080820183905260a0820183905260c0820181905260e0820183905261010082018390526101208201839052610140820152610160810182905261018081018290526101a081019190915290565b60405161015191906118ae565b34801561049b575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ce575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b348015610501575f80fd5b506101796105103660046119cf565b6108d5565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610585576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105928686868686610958565b9695505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610592868686868661098b565b5f80803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461068b576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069888888888886109be565b925092509250955095509592505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461071a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072989898989898989610bc6565b9150915097509795505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107a9576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b585858585610958565b95945050505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461082f576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083d888888888888610bc6565b91509150965096945050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108bc576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ca878787878787610958565b979650505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610945576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610950848484610bfa565b949350505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f78895c1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080602086013581138080156109d257505f5b15610a09576040517f0ace433b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610a1457505f5b15610a4b576040517f21b865b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a586020880188611a16565b15157f0000000000000000000000000000000000000000000000000000000000000000151503610b21575f81610a92576020880135610a9f565b610a9f6020890135611a69565b90505f80610aac83610da7565b915091505f84610acc57610ac7610ac284610f4a565b610f81565b610ae1565b610ad8610ac283610f4a565b610ae190611a9f565b9050610b16610af38c60200135610f81565b610afc90611a9f565b60801b6fffffffffffffffffffffffffffffffff83161790565b965050505050610b94565b5f81610b31576020880135610b3e565b610b3e6020890135611a69565b90505f80610b4b83610fb6565b915091505f84610b6657610b61610ac284610f4a565b610b7b565b610b72610ac283610f4a565b610b7b90611a9f565b9050610b8d610af38c60200135610f81565b9650505050505b507f575e24b40000000000000000000000000000000000000000000000000000000092505f9050955095509592505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f807f0000000000000000000000000000000000000000000000000000000000000000610cce57610c70610c316020860186611adb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b8015610cc95750610cc9610c8a6040860160208701611adb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b610cf8565b610cde610c8a6020860186611adb565b8015610cf85750610cf8610c316040860160208701611adb565b905080610d31576040517fdcdedda900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d416060850160408601611af6565b62ffffff1615610d7d576040517f1213a0ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507fdc98354e00000000000000000000000000000000000000000000000000000000949350505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015610e51575f80fd5b505af1158015610e63573d5f803e3d5ffd5b50505050610eb27f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856110b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f409190611b18565b5091928392509050565b805f811215610f7c57610f7c7f93dafdf10000000000000000000000000000000000000000000000000000000061116d565b919050565b80600f81900b8114610f7c57610f7c7f93dafdf10000000000000000000000000000000000000000000000000000000061116d565b5f80610fe37f000000000000000000000000000000000000000000000000000000000000000030856110b1565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015611068575f80fd5b505af115801561107a573d5f803e3d5ffd5b505050506110a97f00000000000000000000000000000000000000000000000000000000000000003085611175565b509091829150565b805f036110bd57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b158015611152575f80fd5b505af1158015611164573d5f803e3d5ffd5b50505050505050565b805f5260045ffd5b805f0361118157505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015611207575f80fd5b505af1158015611219573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166112ce577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156112a3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c89190611b18565b50505050565b6112d983838361136c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611343573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c89190611b18565b505050565b61136773ffffffffffffffffffffffffffffffffffffffff84167f0000000000000000000000000000000000000000000000000000000000000000835f836113ed575f805f8085875af19050806113e8576113e8835f7ff4b3b1bc000000000000000000000000000000000000000000000000000000006114ab565b6112c8565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806112c8576112c8847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e4000000000000000000000000000000000000000000000000000000005b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461159a575f80fd5b50565b5f60a082840312156115ad575f80fd5b50919050565b5f608082840312156115ad575f80fd5b5f8083601f8401126115d3575f80fd5b50813567ffffffffffffffff8111156115ea575f80fd5b602083019150836020828501011115611601575f80fd5b9250929050565b5f805f805f610160868803121561161d575f80fd5b853561162881611579565b9450611637876020880161159d565b93506116468760c088016115b3565b925061014086013567ffffffffffffffff811115611662575f80fd5b61166e888289016115c3565b969995985093965092949392505050565b5f606082840312156115ad575f80fd5b5f805f805f61014086880312156116a4575f80fd5b85356116af81611579565b94506116be876020880161159d565b93506116cd8760c0880161167f565b925061012086013567ffffffffffffffff811115611662575f80fd5b5f805f805f805f6101a0888a031215611700575f80fd5b873561170b81611579565b965061171a8960208a0161159d565b95506117298960c08a016115b3565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115611755575f80fd5b6117618a828b016115c3565b989b979a50959850939692959293505050565b5f805f806101008587031215611788575f80fd5b843561179381611579565b93506117a2866020870161159d565b925060c08501356117b281611579565b915060e0850135600281900b81146117c8575f80fd5b939692955090935050565b5f805f805f8061016087890312156117e9575f80fd5b86356117f481611579565b9550611803886020890161159d565b94506118128860c0890161167f565b9350610120870135925061014087013567ffffffffffffffff811115611836575f80fd5b61184289828a016115c3565b979a9699509497509295939492505050565b5f805f805f80610120878903121561186a575f80fd5b863561187581611579565b9550611884886020890161159d565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115611836575f80fd5b8151151581526101c0810160208301516118cc602084018215159052565b5060408301516118e0604084018215159052565b5060608301516118f4606084018215159052565b506080830151611908608084018215159052565b5060a083015161191c60a084018215159052565b5060c083015161193060c084018215159052565b5060e083015161194460e084018215159052565b5061010083015161195a61010084018215159052565b5061012083015161197061012084018215159052565b5061014083015161198661014084018215159052565b5061016083015161199c61016084018215159052565b506101808301516119b261018084018215159052565b506101a08301516119c86101a084018215159052565b5092915050565b5f805f60e084860312156119e1575f80fd5b83356119ec81611579565b92506119fb856020860161159d565b915060c0840135611a0b81611579565b809150509250925092565b5f60208284031215611a26575f80fd5b81358015158114611a35575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a9957611a99611a3c565b505f0390565b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103611ad357611ad3611a3c565b5f0392915050565b5f60208284031215611aeb575f80fd5b8135611a3581611579565b5f60208284031215611b06575f80fd5b813562ffffff81168114611a35575f80fd5b5f60208284031215611b28575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"501:1865:151:-:0;;;765:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;782:26:144;;;;865:8:151;901:5;1462:1:120;865:8:151;879:25:189::1;899:4;879:19;:25::i;:::-;-1:-1:-1::0;;;;;;3195:26:150;;::::1;;::::0;;;3231:32;;::::1;;::::0;;;734:50:120;3273:39:150::1;::::0;1039:27:151;;;::::1;;::::0;-1:-1:-1;501:1865:151;;-1:-1:-1;501:1865:151;1555:142:189;1632:58;1662:5;1669:20;501:1865:151;;;;;;;;-1:-1:-1;501:1865:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3457:568:150;;;;;;;;3507:4;3457:568;;;-1:-1:-1;3457:568:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3354:678;1669:20:189;1632:29;:58::i;:::-;1555:142;:::o;3610:1599:89:-;3729:28;;:74;;1397:7;16467:29;;:34;;3729:74;;;:166;;-1:-1:-1;3823:27:89;;;;:72;;1460:7;16467:29;;:34;;3823:72;;3729:166;:265;;;-1:-1:-1;3915:30:89;;;;:79;;1528:7;16467:29;;:34;;3915:79;;3729:265;:362;;;-1:-1:-1;4014:29:89;;;;:77;;1594:7;16467:29;;:34;;4014:77;;3729:362;:467;;;-1:-1:-1;4111:33:89;;;;:85;;1665:6;16467:29;;:34;;4111:85;;3729:467;:570;;;-1:-1:-1;4216:32:89;;;;:83;;1733:6;16467:29;;:34;;4216:83;;3729:570;:652;;;-1:-1:-1;4319:22:89;;;;:62;;1791:6;16467:29;;:34;;4319:62;;3729:652;:732;;;-1:-1:-1;4401:21:89;;;;:60;;1847:6;16467:29;;:34;;4401:60;;3729:732;:818;;;-1:-1:-1;4481:24:89;;;;:66;;1907:6;16467:29;;:34;;4481:66;;3729:818;:902;;;-1:-1:-1;4567:23:89;;;;:64;;1965:6;16467:29;;:34;;4567:64;;3729:902;:1009;;;-1:-1:-1;4651:33:89;;;;:87;;2037:6;16467:29;;:34;;4651:87;;3729:1009;:1114;;;-1:-1:-1;4758:32:89;;;;:85;;2107:6;16467:29;;:34;;4758:85;;3729:1114;:1236;;;-1:-1:-1;4863:40:89;;;;:102;;2186:6;16467:29;;:34;;4863:102;;3729:1236;:1384;;;-1:-1:-1;4985:43:89;;;;:128;;2268:6;16467:29;;:34;;4985:128;;3729:1384;3712:1491;;;5138:54;-1:-1:-1;;;5186:4:89;5138:39;:54::i;:::-;3610:1599;;:::o;1009:257:85:-;1133:8;1130:1;1123:19;-1:-1:-1;;;;;1172:4:85;1168:53;1162:4;1155:67;1245:4;1242:1;1235:15;14:145:262;-1:-1:-1;;;;;103:31:262;;93:42;;83:70;;149:1;146;139:12;164:443;273:6;281;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;382:9;376:16;401:45;440:5;401:45;:::i;:::-;515:2;500:18;;494:25;465:5;;-1:-1:-1;528:47:262;494:25;528:47;:::i;:::-;594:7;584:17;;;164:443;;;;;:::o;:::-;501:1865:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f2575f3560e01c80639f063efc11610087578063d52f63cf11610057578063d52f63cf14610490578063dc4c90d3146104c3578063dc98354e146104f6578063e1b4af6914610371575f80fd5b80639f063efc146102a1578063b47b2fb114610317578063b6a8b0fa14610371578063c4e833ce14610390575f80fd5b8063575e24b4116100c2578063575e24b4146101fc5780635d5711a51461025e5780636c2bbe7e146102a15780636fe7e6eb146102f8575f80fd5b80630bc6bffc146100fd57806321d0ee701461015a578063259982e5146101aa5780633fc8cef3146101c9575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610165575f80fd5b50610179610174366004611608565b610515565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610151565b3480156101b5575f80fd5b506101796101c4366004611608565b61059c565b3480156101d4575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b348015610207575f80fd5b5061021b61021636600461168f565b610619565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff1690820152606001610151565b348015610269575f80fd5b506102917f000000000000000000000000000000000000000000000000000000000000000081565b6040519015158152602001610151565b3480156102ac575f80fd5b506102c06102bb3660046116e9565b6106a9565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352602083019190915201610151565b348015610303575f80fd5b50610179610312366004611774565b610739565b348015610322575f80fd5b506103366103313660046117d3565b6107be565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b602083015201610151565b34801561037c575f80fd5b5061017961038b366004611854565b61084c565b34801561039b575f80fd5b50610483604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c08101825260018082525f60208301819052928201819052606082018390526080820183905260a0820183905260c0820181905260e0820183905261010082018390526101208201839052610140820152610160810182905261018081018290526101a081019190915290565b60405161015191906118ae565b34801561049b575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ce575f80fd5b506101307f000000000000000000000000000000000000000000000000000000000000000081565b348015610501575f80fd5b506101796105103660046119cf565b6108d5565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610585576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105928686868686610958565b9695505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610592868686868661098b565b5f80803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461068b576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069888888888886109be565b925092509250955095509592505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461071a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072989898989898989610bc6565b9150915097509795505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107a9576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b585858585610958565b95945050505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461082f576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083d888888888888610bc6565b91509150965096945050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108bc576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ca878787878787610958565b979650505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610945576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610950848484610bfa565b949350505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f78895c1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080602086013581138080156109d257505f5b15610a09576040517f0ace433b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610a1457505f5b15610a4b576040517f21b865b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a586020880188611a16565b15157f0000000000000000000000000000000000000000000000000000000000000000151503610b21575f81610a92576020880135610a9f565b610a9f6020890135611a69565b90505f80610aac83610da7565b915091505f84610acc57610ac7610ac284610f4a565b610f81565b610ae1565b610ad8610ac283610f4a565b610ae190611a9f565b9050610b16610af38c60200135610f81565b610afc90611a9f565b60801b6fffffffffffffffffffffffffffffffff83161790565b965050505050610b94565b5f81610b31576020880135610b3e565b610b3e6020890135611a69565b90505f80610b4b83610fb6565b915091505f84610b6657610b61610ac284610f4a565b610b7b565b610b72610ac283610f4a565b610b7b90611a9f565b9050610b8d610af38c60200135610f81565b9650505050505b507f575e24b40000000000000000000000000000000000000000000000000000000092505f9050955095509592505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f807f0000000000000000000000000000000000000000000000000000000000000000610cce57610c70610c316020860186611adb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b8015610cc95750610cc9610c8a6040860160208701611adb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b610cf8565b610cde610c8a6020860186611adb565b8015610cf85750610cf8610c316040860160208701611adb565b905080610d31576040517fdcdedda900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d416060850160408601611af6565b62ffffff1615610d7d576040517f1213a0ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507fdc98354e00000000000000000000000000000000000000000000000000000000949350505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015610e51575f80fd5b505af1158015610e63573d5f803e3d5ffd5b50505050610eb27f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856110b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f409190611b18565b5091928392509050565b805f811215610f7c57610f7c7f93dafdf10000000000000000000000000000000000000000000000000000000061116d565b919050565b80600f81900b8114610f7c57610f7c7f93dafdf10000000000000000000000000000000000000000000000000000000061116d565b5f80610fe37f000000000000000000000000000000000000000000000000000000000000000030856110b1565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015611068575f80fd5b505af115801561107a573d5f803e3d5ffd5b505050506110a97f00000000000000000000000000000000000000000000000000000000000000003085611175565b509091829150565b805f036110bd57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b158015611152575f80fd5b505af1158015611164573d5f803e3d5ffd5b50505050505050565b805f5260045ffd5b805f0361118157505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015611207575f80fd5b505af1158015611219573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166112ce577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156112a3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c89190611b18565b50505050565b6112d983838361136c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611343573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c89190611b18565b505050565b61136773ffffffffffffffffffffffffffffffffffffffff84167f0000000000000000000000000000000000000000000000000000000000000000835f836113ed575f805f8085875af19050806113e8576113e8835f7ff4b3b1bc000000000000000000000000000000000000000000000000000000006114ab565b6112c8565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806112c8576112c8847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e4000000000000000000000000000000000000000000000000000000005b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461159a575f80fd5b50565b5f60a082840312156115ad575f80fd5b50919050565b5f608082840312156115ad575f80fd5b5f8083601f8401126115d3575f80fd5b50813567ffffffffffffffff8111156115ea575f80fd5b602083019150836020828501011115611601575f80fd5b9250929050565b5f805f805f610160868803121561161d575f80fd5b853561162881611579565b9450611637876020880161159d565b93506116468760c088016115b3565b925061014086013567ffffffffffffffff811115611662575f80fd5b61166e888289016115c3565b969995985093965092949392505050565b5f606082840312156115ad575f80fd5b5f805f805f61014086880312156116a4575f80fd5b85356116af81611579565b94506116be876020880161159d565b93506116cd8760c0880161167f565b925061012086013567ffffffffffffffff811115611662575f80fd5b5f805f805f805f6101a0888a031215611700575f80fd5b873561170b81611579565b965061171a8960208a0161159d565b95506117298960c08a016115b3565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115611755575f80fd5b6117618a828b016115c3565b989b979a50959850939692959293505050565b5f805f806101008587031215611788575f80fd5b843561179381611579565b93506117a2866020870161159d565b925060c08501356117b281611579565b915060e0850135600281900b81146117c8575f80fd5b939692955090935050565b5f805f805f8061016087890312156117e9575f80fd5b86356117f481611579565b9550611803886020890161159d565b94506118128860c0890161167f565b9350610120870135925061014087013567ffffffffffffffff811115611836575f80fd5b61184289828a016115c3565b979a9699509497509295939492505050565b5f805f805f80610120878903121561186a575f80fd5b863561187581611579565b9550611884886020890161159d565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115611836575f80fd5b8151151581526101c0810160208301516118cc602084018215159052565b5060408301516118e0604084018215159052565b5060608301516118f4606084018215159052565b506080830151611908608084018215159052565b5060a083015161191c60a084018215159052565b5060c083015161193060c084018215159052565b5060e083015161194460e084018215159052565b5061010083015161195a61010084018215159052565b5061012083015161197061012084018215159052565b5061014083015161198661014084018215159052565b5061016083015161199c61016084018215159052565b506101808301516119b261018084018215159052565b506101a08301516119c86101a084018215159052565b5092915050565b5f805f60e084860312156119e1575f80fd5b83356119ec81611579565b92506119fb856020860161159d565b915060c0840135611a0b81611579565b809150509250925092565b5f60208284031215611a26575f80fd5b81358015158114611a35575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a9957611a99611a3c565b505f0390565b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103611ad357611ad3611a3c565b5f0392915050565b5f60208284031215611aeb575f80fd5b8135611a3581611579565b5f60208284031215611b06575f80fd5b813562ffffff81168114611a35575f80fd5b5f60208284031215611b28575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"501:1865:151:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2302:44:150;;;;;;;;;;;;;;;;;;220:42:262;208:55;;;190:74;;178:2;163:18;2302:44:150;;;;;;;;3093:290:189;;;;;;;;;;-1:-1:-1;3093:290:189;;;;;:::i;:::-;;:::i;:::-;;;2130:66:262;2118:79;;;2100:98;;2088:2;2073:18;3093:290:189;1956:248:262;2560:284:189;;;;;;;;;;-1:-1:-1;2560:284:189;;;;;:::i;:::-;;:::i;584:26:151:-;;;;;;;;;;;;;;;5032:272:189;;;;;;;;;;-1:-1:-1;5032:272:189;;;;;:::i;:::-;;:::i;:::-;;;;3701:66:262;3689:79;;;3671:98;;3800:2;3785:18;;3778:34;;;;3860:8;3848:21;3828:18;;;3821:49;3659:2;3644:18;5032:272:189;3437:439:262;2813:36:150;;;;;;;;;;;;;;;;;;4142:14:262;;4135:22;4117:41;;4105:2;4090:18;2813:36:150;3977:187:262;4329:384:189;;;;;;;;;;-1:-1:-1;4329:384:189;;;;;:::i;:::-;;:::i;:::-;;;;5548:66:262;5536:79;;;5518:98;;5647:2;5632:18;;5625:34;;;;5491:18;4329:384:189;5313:352:262;2134:240:189;;;;;;;;;;-1:-1:-1;2134:240:189;;;;;:::i;:::-;;:::i;5559:298::-;;;;;;;;;;-1:-1:-1;5559:298:189;;;;;:::i;:::-;;:::i;:::-;;;;7529:66:262;7517:79;;;7499:98;;7644:2;7633:22;;;;7628:2;7613:18;;7606:50;7472:18;5559:298:189;7329:333:262;6108:285:189;;;;;;;;;;-1:-1:-1;6108:285:189;;;;;:::i;:::-;;:::i;3354:678:150:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3457:568:150;;;;;;;;3507:4;3457:568;;;-1:-1:-1;3457:568:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3354:678;;;;;;;;:::i;2196:41::-;;;;;;;;;;;;;;;411::144;;;;;;;;;;;;;;;1730:224:189;;;;;;;;;;-1:-1:-1;1730:224:189;;;;;:::i;:::-;;:::i;3093:290::-;3298:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;3323:53:189::1;3346:6;3354:3;3359:6;3367:8;;3323:22;:53::i;:::-;3316:60:::0;3093:290;-1:-1:-1;;;;;;3093:290:189:o;2560:284::-;2762:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;2787:50:189::1;2807:6;2815:3;2820:6;2828:8;;2787:19;:50::i;5032:272::-:0;5201:6;;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;5255:42:189::1;5267:6;5275:3;5280:6;5288:8;;5255:11;:42::i;:::-;5248:49;;;;;;5032:272:::0;;;;;;;;;:::o;4329:384::-;4595:6;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;4634:72:189::1;4656:6;4664:3;4669:6;4677:5;4684:11;4697:8;;4634:21;:72::i;:::-;4627:79;;;;4329:384:::0;;;;;;;;;;:::o;2134:240::-;2289:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;2318:49:189::1;2335:6;2343:3;2348:12;2362:4;2318:16;:49::i;:::-;2311:56:::0;2134:240;-1:-1:-1;;;;;2134:240:189:o;5559:298::-;5769:6;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;5802:48:189::1;5813:6;5821:3;5826:6;5834:5;5841:8;;5802:10;:48::i;:::-;5795:55;;;;5559:298:::0;;;;;;;;;:::o;6108:285::-;6307:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;6332:54:189::1;6346:6;6354:3;6359:7;6368;6377:8;;6332:13;:54::i;:::-;6325:61:::0;6108:285;-1:-1:-1;;;;;;;6108:285:189:o;1730:224::-;1874:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;1903:44:189::1;1921:6;1929:3;1934:12;1903:17;:44::i;:::-;1896:51:::0;1730:224;-1:-1:-1;;;;1730:224:189:o;3389:213::-;3546:6;3575:20;;;;;;;;;;;;;;5042:225:150;5210:6;5239:21;;;;;;;;;;;;;;5720:1650;5863:6;;;5940:22;;;;:26;-1:-1:-1;5940:26:150;5980:38;;;;-1:-1:-1;5996:22:150;5980:38;5976:75;;;6027:24;;;;;;;;;;;;;;5976:75;6066:12;6065:13;:40;;;;-1:-1:-1;6082:23:150;6065:40;6061:78;;;6114:25;;;;;;;;;;;;;;6061:78;6172:17;;;;:6;:17;:::i;:::-;6154:35;;:14;:35;;;6150:1154;;6236:19;6274:12;:104;;6354:22;;;;6274:104;;;6297:23;6298:22;;;;6297:23;:::i;:::-;6236:142;;6393:30;6425:21;6450;6459:11;6450:8;:21::i;:::-;6392:79;;;;6485:24;6528:12;:98;;6582:44;:33;:22;:31;:33::i;:::-;:42;:44::i;:::-;6528:98;;;6544:35;:24;:13;:22;:24::i;:35::-;6543:36;;;:::i;:::-;6485:141;;6652:72;6671:33;:6;:22;;;:31;:33::i;:::-;6670:34;;;:::i;:::-;548:3:119;510:24;540:19;536:42;;507:72;;317:270;6652:72:150;6640:84;;6191:544;;;;6150:1154;;;6788:19;6810:12;:138;;6924:22;;;;6810:138;;;6849:23;6850:22;;;;6849:23;:::i;:::-;6788:160;;6963:27;6992:23;7019:22;7029:11;7019:9;:22::i;:::-;6962:79;;;;7055:24;7098:12;:97;;7154:41;:30;:19;:28;:30::i;:41::-;7098:97;;;7114:37;:26;:15;:24;:26::i;:37::-;7113:38;;;:::i;:::-;7055:140;;7221:72;7240:33;:6;:22;;;:31;:33::i;7221:72::-;7209:84;;6741:563;;;;6150:1154;-1:-1:-1;7322:26:150;;-1:-1:-1;7361:1:150;;-1:-1:-1;5720:1650:150;;;;;;;;;:::o;4719:280:189:-;4933:6;4941:12;4972:20;;;;;;;;;;;;;;4304:591:150;4407:6;4504:16;4523:14;:206;;4649:36;:17;;;;:7;:17;:::i;:::-;4670:15;448:51:120;;;;;;;;364:138;4649:36:150;:79;;;;-1:-1:-1;4689:39:150;:17;;;;;;;;:::i;:::-;4710:18;448:51:120;;;;;;;;364:138;4689:39:150;4523:206;;;4553:39;:17;;;;:7;:17;:::i;:39::-;:79;;;;-1:-1:-1;4596:36:150;:17;;;;;;;;:::i;:36::-;4504:225;;4745:11;4740:43;;4765:18;;;;;;;;;;;;;;4740:43;4797:11;;;;;;;;:::i;:::-;:16;;;4793:45;;4822:16;;;;;;;;;;;;;;4793:45;-1:-1:-1;4856:32:150;;4304:591;-1:-1:-1;;;;4304:591:150:o;1238:567:151:-;1373:33;;;;;:16;1390:15;208:55:262;;1373:33:151;;;190:74:262;-1:-1:-1;;;;1373:11:151;:16;;;;163:18:262;;1373:33:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:58;1575:18;1603:4;1610:16;1569:5;:58::i;:::-;1712:11;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1750:16:151;;;;-1:-1:-1;1238:567:151;-1:-1:-1;1238:567:151:o;1776:151:98:-;1859:1;1828:8;1875:5;;1871:49;;;1882:38;:25;:36;:38::i;:::-;1776:151;;;:::o;1460:::-;1542:1;1558:6;;;;;;1554:50;;1566:38;:25;:36;:38::i;1852:437:151:-;1921:7;1930;1994:52;2000:15;2025:4;2032:13;1994:5;:52::i;:::-;2127:28;;;;;;;;12972:25:262;;;2127:4:151;:13;;;;;12945:18:262;;2127:28:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2165:57;2173:18;2201:4;2208:13;2165:7;:57::i;:::-;-1:-1:-1;2240:13:151;;;;-1:-1:-1;1852:437:151:o;1270:173:141:-;1362:6;1372:1;1362:11;1358:24;;1270:173;;;:::o;1358:24::-;1391:45;;;;;:16;13258:55:262;;;1391:45:141;;;13240:74:262;13350:55;;;13330:18;;;13323:83;13422:18;;;13415:34;;;1391:11:141;:16;;;;13213:18:262;;1391:45:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1270:173;;;:::o;753:163:85:-;863:8;860:1;853:19;895:4;892:1;885:15;1766:346:141;1856:6;1866:1;1856:11;1852:24;;1766:346;;;:::o;1852:24::-;1886:26;;;;;:16;208:55:262;;;1886:26:141;;;190:74:262;1886:11:141;:16;;;;163:18:262;;1886:26:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1926:22:141;;;1922:184;;1966:11;:18;;;1992:6;1966:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1766:346;;;:::o;1922:184::-;2032:29;2037:8;2047:5;2054:6;2032:4;:29::i;:::-;2075:11;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1922:184::-;1766:346;;;:::o;7551:134:150:-;7634:44;:14;;;7657:11;7671:6;1743:12:120;4998:58;1765:2574;;1956:1;1953;1950;1947;1939:6;1935:2;1928:5;1923:35;1912:46;;2086:7;2081:127;;2113:80;2148:2;2159:1;2163:29;2113:34;:80::i;:::-;1765:2574;;;2352:4;2346:11;2488:66;2483:3;2476:79;2600:42;2596:2;2592:51;2588:1;2583:3;2579:11;2572:72;2720:6;2715:2;2710:3;2706:12;2699:28;3649:2;3646:1;3642:2;3637:3;3634:1;3624:8;3617:5;3612:40;3141:16;3134:24;3128:2;3110:16;3107:24;3103:1;3099;3093:8;3090:15;3086:46;3083:76;2859:815;2828:846;;3752:1;3747:3;3740:14;3853:1;3846:4;3841:3;3837:14;3830:25;3956:1;3949:4;3944:3;3940:14;3933:25;;4125:7;4120:209;;4152:162;4224:8;4235:31;4268:28;3508:1663:85;3953:4;3947:11;3710:21;4094:33;;;4186:42;4163:66;;4156:4;4147:14;;4140:90;4330:66;4299:98;;4276:4;4267:14;;4243:168;4483:4;4476;4467:14;;4460:28;3919:2;3909;3891:16;3887:25;3883:34;;;3879:43;4569:4;4565:26;;4558:4;4549:14;;4542:50;4662:16;4655:4;4646:14;;4639:40;3710:21;;4755:16;-1:-1:-1;4745:4:85;4736:14;;4721:51;4869:4;4850:15;4844:4;4840:26;4835:3;4831:36;4824:50;5022:66;5003:17;4999:90;4964:15;4958:4;4954:26;4949:3;4945:36;4921:182;5138:15;5132:4;5128:26;5123:3;5116:39;275:154:262;361:42;354:5;350:54;343:5;340:65;330:93;;419:1;416;409:12;330:93;275:154;:::o;434:156::-;494:5;539:3;530:6;525:3;521:16;517:26;514:46;;;556:1;553;546:12;514:46;-1:-1:-1;578:6:262;434:156;-1:-1:-1;434:156:262:o;595:170::-;669:5;714:3;705:6;700:3;696:16;692:26;689:46;;;731:1;728;721:12;770:347;821:8;831:6;885:3;878:4;870:6;866:17;862:27;852:55;;903:1;900;893:12;852:55;-1:-1:-1;926:20:262;;969:18;958:30;;955:50;;;1001:1;998;991:12;955:50;1038:4;1030:6;1026:17;1014:29;;1090:3;1083:4;1074:6;1066;1062:19;1058:30;1055:39;1052:59;;;1107:1;1104;1097:12;1052:59;770:347;;;;;:::o;1122:829::-;1289:6;1297;1305;1313;1321;1374:3;1362:9;1353:7;1349:23;1345:33;1342:53;;;1391:1;1388;1381:12;1342:53;1430:9;1417:23;1449:31;1474:5;1449:31;:::i;:::-;1499:5;-1:-1:-1;1523:63:262;1578:7;1573:2;1558:18;;1523:63;:::i;:::-;1513:73;;1605:78;1675:7;1669:3;1658:9;1654:19;1605:78;:::i;:::-;1595:88;;1734:3;1723:9;1719:19;1706:33;1762:18;1754:6;1751:30;1748:50;;;1794:1;1791;1784:12;1748:50;1833:58;1883:7;1874:6;1863:9;1859:22;1833:58;:::i;:::-;1122:829;;;;-1:-1:-1;1122:829:262;;-1:-1:-1;1910:8:262;;1807:84;1122:829;-1:-1:-1;;;1122:829:262:o;2462:158::-;2525:5;2570:2;2561:6;2556:3;2552:16;2548:25;2545:45;;;2586:1;2583;2576:12;2625:807;2781:6;2789;2797;2805;2813;2866:3;2854:9;2845:7;2841:23;2837:33;2834:53;;;2883:1;2880;2873:12;2834:53;2922:9;2909:23;2941:31;2966:5;2941:31;:::i;:::-;2991:5;-1:-1:-1;3015:63:262;3070:7;3065:2;3050:18;;3015:63;:::i;:::-;3005:73;;3097:67;3156:7;3150:3;3139:9;3135:19;3097:67;:::i;:::-;3087:77;;3215:3;3204:9;3200:19;3187:33;3243:18;3235:6;3232:30;3229:50;;;3275:1;3272;3265:12;4169:1139;4422:6;4430;4438;4446;4454;4462;4470;4523:3;4511:9;4502:7;4498:23;4494:33;4491:53;;;4540:1;4537;4530:12;4491:53;4579:9;4566:23;4598:31;4623:5;4598:31;:::i;:::-;4648:5;-1:-1:-1;4672:63:262;4727:7;4722:2;4707:18;;4672:63;:::i;:::-;4662:73;;4754:78;4824:7;4818:3;4807:9;4803:19;4754:78;:::i;:::-;4744:88;-1:-1:-1;4905:3:262;4890:19;;4877:33;;-1:-1:-1;5009:3:262;4994:19;;4981:33;;-1:-1:-1;5091:3:262;5076:19;;5063:33;5119:18;5108:30;;5105:50;;;5151:1;5148;5141:12;5105:50;5190:58;5240:7;5231:6;5220:9;5216:22;5190:58;:::i;:::-;4169:1139;;;;-1:-1:-1;4169:1139:262;;-1:-1:-1;4169:1139:262;;;;5164:84;;-1:-1:-1;;;4169:1139:262:o;5670:687::-;5782:6;5790;5798;5806;5859:3;5847:9;5838:7;5834:23;5830:33;5827:53;;;5876:1;5873;5866:12;5827:53;5915:9;5902:23;5934:31;5959:5;5934:31;:::i;:::-;5984:5;-1:-1:-1;6008:63:262;6063:7;6058:2;6043:18;;6008:63;:::i;:::-;5998:73;;6123:3;6112:9;6108:19;6095:33;6137;6162:7;6137:33;:::i;:::-;6189:7;-1:-1:-1;6248:3:262;6233:19;;6220:33;6295:1;6284:22;;;6272:35;;6262:63;;6321:1;6318;6311:12;6262:63;5670:687;;;;-1:-1:-1;5670:687:262;;-1:-1:-1;;5670:687:262:o;6362:962::-;6561:6;6569;6577;6585;6593;6601;6654:3;6642:9;6633:7;6629:23;6625:33;6622:53;;;6671:1;6668;6661:12;6622:53;6710:9;6697:23;6729:31;6754:5;6729:31;:::i;:::-;6779:5;-1:-1:-1;6803:63:262;6858:7;6853:2;6838:18;;6803:63;:::i;:::-;6793:73;;6885:67;6944:7;6938:3;6927:9;6923:19;6885:67;:::i;:::-;6875:77;-1:-1:-1;7025:3:262;7010:19;;6997:33;;-1:-1:-1;7107:3:262;7092:19;;7079:33;7135:18;7124:30;;7121:50;;;7167:1;7164;7157:12;7121:50;7206:58;7256:7;7247:6;7236:9;7232:22;7206:58;:::i;:::-;6362:962;;;;-1:-1:-1;6362:962:262;;-1:-1:-1;6362:962:262;;7283:8;;6362:962;-1:-1:-1;;;6362:962:262:o;7667:915::-;7801:6;7809;7817;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;7969:31;7994:5;7969:31;:::i;:::-;8019:5;-1:-1:-1;8043:63:262;8098:7;8093:2;8078:18;;8043:63;:::i;:::-;8033:73;-1:-1:-1;8179:3:262;8164:19;;8151:33;;-1:-1:-1;8283:3:262;8268:19;;8255:33;;-1:-1:-1;8365:3:262;8350:19;;8337:33;8393:18;8382:30;;8379:50;;;8425:1;8422;8415:12;8587:1801;8810:13;;3951;3944:21;3932:34;;8781:3;8766:19;;8882:4;8874:6;8870:17;8864:24;8897:51;8942:4;8931:9;8927:20;8913:12;3951:13;3944:21;3932:34;;3881:91;8897:51;;8997:4;8989:6;8985:17;8979:24;9012:53;9059:4;9048:9;9044:20;9028:14;3951:13;3944:21;3932:34;;3881:91;9012:53;;9114:4;9106:6;9102:17;9096:24;9129:53;9176:4;9165:9;9161:20;9145:14;3951:13;3944:21;3932:34;;3881:91;9129:53;;9231:4;9223:6;9219:17;9213:24;9246:53;9293:4;9282:9;9278:20;9262:14;3951:13;3944:21;3932:34;;3881:91;9246:53;;9348:4;9340:6;9336:17;9330:24;9363:53;9410:4;9399:9;9395:20;9379:14;3951:13;3944:21;3932:34;;3881:91;9363:53;;9465:4;9457:6;9453:17;9447:24;9480:53;9527:4;9516:9;9512:20;9496:14;3951:13;3944:21;3932:34;;3881:91;9480:53;;9582:4;9574:6;9570:17;9564:24;9597:53;9644:4;9633:9;9629:20;9613:14;3951:13;3944:21;3932:34;;3881:91;9597:53;;9699:6;9691;9687:19;9681:26;9716:55;9763:6;9752:9;9748:22;9732:14;3951:13;3944:21;3932:34;;3881:91;9716:55;;9820:6;9812;9808:19;9802:26;9837:55;9884:6;9873:9;9869:22;9853:14;3951:13;3944:21;3932:34;;3881:91;9837:55;;9941:6;9933;9929:19;9923:26;9958:55;10005:6;9994:9;9990:22;9974:14;3951:13;3944:21;3932:34;;3881:91;9958:55;;10063:6;10055;10051:19;10045:26;10080:56;10128:6;10117:9;10113:22;10096:15;3951:13;3944:21;3932:34;;3881:91;10080:56;;10186:6;10178;10174:19;10168:26;10203:56;10251:6;10240:9;10236:22;10219:15;3951:13;3944:21;3932:34;;3881:91;10203:56;;10309:6;10301;10297:19;10291:26;10326:56;10374:6;10363:9;10359:22;10342:15;3951:13;3944:21;3932:34;;3881:91;10326:56;;8587:1801;;;;:::o;10646:517::-;10751:6;10759;10767;10820:3;10808:9;10799:7;10795:23;10791:33;10788:53;;;10837:1;10834;10827:12;10788:53;10876:9;10863:23;10895:31;10920:5;10895:31;:::i;:::-;10945:5;-1:-1:-1;10969:63:262;11024:7;11019:2;11004:18;;10969:63;:::i;:::-;10959:73;;11084:3;11073:9;11069:19;11056:33;11098;11123:7;11098:33;:::i;:::-;11150:7;11140:17;;;10646:517;;;;;:::o;11168:273::-;11224:6;11277:2;11265:9;11256:7;11252:23;11248:32;11245:52;;;11293:1;11290;11283:12;11245:52;11332:9;11319:23;11385:5;11378:13;11371:21;11364:5;11361:32;11351:60;;11407:1;11404;11397:12;11351:60;11430:5;11168:273;-1:-1:-1;;;11168:273:262:o;11446:184::-;11498:77;11495:1;11488:88;11595:4;11592:1;11585:15;11619:4;11616:1;11609:15;11635:191;11670:3;11701:66;11694:5;11691:77;11688:103;;11771:18;;:::i;:::-;-1:-1:-1;11811:1:262;11807:13;;11635:191::o;11831:240::-;11866:3;11914:5;11910:2;11899:21;11944:66;11935:7;11932:79;11929:105;;12014:18;;:::i;:::-;12054:1;12050:15;;11831:240;-1:-1:-1;;11831:240:262:o;12076:277::-;12165:6;12218:2;12206:9;12197:7;12193:23;12189:32;12186:52;;;12234:1;12231;12224:12;12186:52;12273:9;12260:23;12292:31;12317:5;12292:31;:::i;12358:274::-;12416:6;12469:2;12457:9;12448:7;12444:23;12440:32;12437:52;;;12485:1;12482;12475:12;12437:52;12524:9;12511:23;12574:8;12567:5;12563:20;12556:5;12553:31;12543:59;;12598:1;12595;12588:12;12637:184;12707:6;12760:2;12748:9;12739:7;12735:23;12731:32;12728:52;;;12776:1;12773;12766:12;12728:52;-1:-1:-1;12799:16:262;;12637:184;-1:-1:-1;12637:184:262:o","linkReferences":{},"immutableReferences":{"66153":[{"start":1236,"length":32},{"start":1326,"length":32},{"start":1461,"length":32},{"start":1588,"length":32},{"start":1731,"length":32},{"start":1874,"length":32},{"start":2008,"length":32},{"start":2149,"length":32},{"start":2286,"length":32},{"start":3600,"length":32},{"start":3764,"length":32},{"start":4369,"length":32},{"start":4550,"length":32},{"start":4666,"length":32},{"start":4827,"length":32},{"start":5000,"length":32}],"66570":[{"start":1185,"length":32},{"start":3123,"length":32},{"start":3556,"length":32},{"start":4029,"length":32}],"66574":[{"start":270,"length":32},{"start":3212,"length":32},{"start":3692,"length":32},{"start":4227,"length":32}],"66577":[{"start":623,"length":32},{"start":2652,"length":32},{"start":3070,"length":32}],"66985":[{"start":474,"length":32},{"start":3725,"length":32},{"start":4114,"length":32}]}},"methodIdentifiers":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"9f063efc","afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"e1b4af69","afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":"6fe7e6eb","afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"6c2bbe7e","afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":"b47b2fb1","beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"259982e5","beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"b6a8b0fa","beforeInitialize(address,(address,address,uint24,int24,address),uint160)":"dc98354e","beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"21d0ee70","beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"575e24b4","getHookPermissions()":"c4e833ce","poolManager()":"dc4c90d3","underlyingCurrency()":"0bc6bffc","weth()":"3fc8cef3","wrapZeroForOne()":"5d5711a5","wrapperCurrency()":"d52f63cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_weth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotNegative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotPositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExactInputNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExactOutputNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HookNotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPoolFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPoolToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LiquidityNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterAddLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterDonate\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"afterInitialize\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"beforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"beforeDonate\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"beforeInitialize\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"beforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BeforeSwapDelta\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHookPermissions\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"beforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeDonate\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterDonate\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeSwapReturnDelta\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterSwapReturnDelta\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterAddLiquidityReturnDelta\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterRemoveLiquidityReturnDelta\",\"type\":\"bool\"}],\"internalType\":\"struct Hooks.Permissions\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingCurrency\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"weth\",\"outputs\":[{\"internalType\":\"contract WETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapZeroForOne\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperCurrency\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Implements 1:1 wrapping/unwrapping of ETH to WETH\",\"errors\":{\"InvalidPoolFee()\":[{\"details\":\"Fee must be 0 as wrapper pools don't charge fees\"}],\"InvalidPoolToken()\":[{\"details\":\"Pool must contain exactly one wrapper token and its underlying token\"}],\"LiquidityNotAllowed()\":[{\"details\":\"Liquidity operations are blocked since all liquidity is managed by the token wrapper\"}]},\"kind\":\"dev\",\"methods\":{\"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\":{\"params\":{\"delta\":\"The caller's balance delta after adding liquidity; the sum of principal delta, fees accrued, and hook delta\",\"feesAccrued\":\"The fees accrued since the last time fees were collected from this position\",\"hookData\":\"Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for adding liquidity\",\"sender\":\"The initial msg.sender for the add liquidity call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\",\"_1\":\"BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency\"}},\"afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"params\":{\"amount0\":\"The amount of token0 being donated\",\"amount1\":\"The amount of token1 being donated\",\"hookData\":\"Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook\",\"key\":\"The key for the pool\",\"sender\":\"The initial msg.sender for the donate call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\":{\"params\":{\"key\":\"The key for the pool being initialized\",\"sender\":\"The initial msg.sender for the initialize call\",\"sqrtPriceX96\":\"The sqrt(price) of the pool as a Q64.96\",\"tick\":\"The current tick after the state of a pool is initialized\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\":{\"params\":{\"delta\":\"The caller's balance delta after removing liquidity; the sum of principal delta, fees accrued, and hook delta\",\"feesAccrued\":\"The fees accrued since the last time fees were collected from this position\",\"hookData\":\"Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for removing liquidity\",\"sender\":\"The initial msg.sender for the remove liquidity call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\",\"_1\":\"BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency\"}},\"afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\":{\"params\":{\"delta\":\"The amount owed to the caller (positive) or owed to the pool (negative)\",\"hookData\":\"Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for the swap\",\"sender\":\"The initial msg.sender for the swap call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\",\"_1\":\"int128 The hook's delta in unspecified currency. Positive: the hook is owed/took currency, negative: the hook owes/sent currency\"}},\"beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"params\":{\"hookData\":\"Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for adding liquidity\",\"sender\":\"The initial msg.sender for the add liquidity call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"params\":{\"amount0\":\"The amount of token0 being donated\",\"amount1\":\"The amount of token1 being donated\",\"hookData\":\"Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook\",\"key\":\"The key for the pool\",\"sender\":\"The initial msg.sender for the donate call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"beforeInitialize(address,(address,address,uint24,int24,address),uint160)\":{\"params\":{\"key\":\"The key for the pool being initialized\",\"sender\":\"The initial msg.sender for the initialize call\",\"sqrtPriceX96\":\"The sqrt(price) of the pool as a Q64.96\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"params\":{\"hookData\":\"Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for removing liquidity\",\"sender\":\"The initial msg.sender for the remove liquidity call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\"}},\"beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"params\":{\"hookData\":\"Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook\",\"key\":\"The key for the pool\",\"params\":\"The parameters for the swap\",\"sender\":\"The initial msg.sender for the swap call\"},\"returns\":{\"_0\":\"bytes4 The function selector for the hook\",\"_1\":\"BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency\",\"_2\":\"uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)\"}},\"constructor\":{\"params\":{\"_manager\":\"The Uniswap V4 pool manager\",\"_weth\":\"The WETH9 contract address\"}},\"getHookPermissions()\":{\"details\":\"Used at deployment to validate the address correctly represents the expected permissions\",\"returns\":{\"_0\":\"Permissions struct\"}}},\"title\":\"Wrapped Ether Hook\",\"version\":1},\"userdoc\":{\"errors\":{\"DeltaNotNegative(address)\":[{\"notice\":\"Emitted trying to take a negative delta.\"}],\"DeltaNotPositive(address)\":[{\"notice\":\"Emitted trying to settle a positive delta.\"}],\"ExactInputNotSupported()\":[{\"notice\":\"Thrown when exact input swaps are not supported\"}],\"ExactOutputNotSupported()\":[{\"notice\":\"Thrown when exact output swaps are not supported\"}],\"InsufficientBalance()\":[{\"notice\":\"Emitted when the contract does not have enough balance to wrap or unwrap.\"}],\"InvalidPoolFee()\":[{\"notice\":\"Thrown when initializing a pool with non-zero fee\"}],\"InvalidPoolToken()\":[{\"notice\":\"Thrown when initializing a pool with invalid tokens\"}],\"LiquidityNotAllowed()\":[{\"notice\":\"Thrown when attempting to add or remove liquidity\"}],\"NotPoolManager()\":[{\"notice\":\"Thrown when the caller is not PoolManager\"}]},\"kind\":\"user\",\"methods\":{\"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\":{\"notice\":\"The hook called after liquidity is added\"},\"afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"The hook called after donate\"},\"afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\":{\"notice\":\"The hook called after the state of a pool is initialized\"},\"afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\":{\"notice\":\"The hook called after liquidity is removed\"},\"afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\":{\"notice\":\"The hook called after a swap\"},\"beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"The hook called before liquidity is added\"},\"beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"The hook called before donate\"},\"beforeInitialize(address,(address,address,uint24,int24,address),uint160)\":{\"notice\":\"The hook called before the state of a pool is initialized\"},\"beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"The hook called before liquidity is removed\"},\"beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"The hook called before a swap\"},\"constructor\":{\"notice\":\"Creates a new WETH wrapper hook\"},\"getHookPermissions()\":{\"notice\":\"Returns a struct of permissions to signal which hook functions are to be implemented\"},\"poolManager()\":{\"notice\":\"The Uniswap v4 PoolManager contract\"},\"underlyingCurrency()\":{\"notice\":\"The underlying token currency (e.g., ETH)\"},\"weth()\":{\"notice\":\"The WETH9 contract\"},\"wrapZeroForOne()\":{\"notice\":\"Indicates whether wrapping occurs when swapping from token0 to token1\"},\"wrapperCurrency()\":{\"notice\":\"The wrapped token currency (e.g., WETH)\"}},\"notice\":\"Hook for wrapping/unwrapping ETH in Uniswap V4 pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/hooks/WETHHook.sol\":\"WETHHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/v4-core/lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/v4-core/lib/solmate/src/tokens/WETH.sol\":{\"keccak256\":\"0x343cf5f6b643864c5728fa9bf057c5708052402b22c5662decce94f5febff514\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://dc3722cf992cc13ff0728660432092d8ae6851f500b24c0aa474c45f2e8c3f2d\",\"dweb:/ipfs/QmVq7veVaBKKdm4AKQiuCXMPGHPuCcPksm7LNuA2ihpN9U\"]},\"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/base/DeltaResolver.sol\":{\"keccak256\":\"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36\",\"dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw\"]},\"src/base/ImmutableState.sol\":{\"keccak256\":\"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337\",\"dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU\"]},\"src/base/hooks/BaseTokenWrapperHook.sol\":{\"keccak256\":\"0x4444f619c7fff29d2e9e4ed1802bdc8c0852bec1f1c0a47c34c549466c6a6aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e587d8588c44d960af1625cd9ee7bf9a33ed568814d7970474072540ffcc83f\",\"dweb:/ipfs/QmctJqdWMgQ9QbiF5ef9NtnNtNcNHfGSQqEQ69gt483f4o\"]},\"src/hooks/WETHHook.sol\":{\"keccak256\":\"0x0d0807790d36a280c88c9bef491d4185c7f395f04ff3ed672c1a03cd5bce704b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://953e607edaf41f825cdac2dd70531e9de0ae0ade74372c08c6957d82da9cb281\",\"dweb:/ipfs/QmRupzgrXGkY81nMJZfd6j7eMH7z7pJrjTtUxkdRESnx3b\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"src/utils/BaseHook.sol\":{\"keccak256\":\"0x6268607345149d912996d1c2bac693b2102304cc97c19ec4fef184d6fa390e89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6c0dddffa6c5eb3c10bc45d56d58bc3f4773778322fa10a4acf46e2292b61b3\",\"dweb:/ipfs/Qmc1Srhh6ne5Lsi2Y5BBz8pgPLmJdg8uN1UCeJzKnr6Kra\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_manager","type":"address"},{"internalType":"address payable","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotNegative"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotPositive"},{"inputs":[],"type":"error","name":"ExactInputNotSupported"},{"inputs":[],"type":"error","name":"ExactOutputNotSupported"},{"inputs":[],"type":"error","name":"HookNotImplemented"},{"inputs":[],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidPoolFee"},{"inputs":[],"type":"error","name":"InvalidPoolToken"},{"inputs":[],"type":"error","name":"LiquidityNotAllowed"},{"inputs":[],"type":"error","name":"NotPoolManager"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"afterAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"afterDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"nonpayable","type":"function","name":"afterInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"afterRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"beforeAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"beforeDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"beforeInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"beforeRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BeforeSwapDelta","name":"","type":"int256"},{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getHookPermissions","outputs":[{"internalType":"struct Hooks.Permissions","name":"","type":"tuple","components":[{"internalType":"bool","name":"beforeInitialize","type":"bool"},{"internalType":"bool","name":"afterInitialize","type":"bool"},{"internalType":"bool","name":"beforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"afterAddLiquidity","type":"bool"},{"internalType":"bool","name":"beforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeDonate","type":"bool"},{"internalType":"bool","name":"afterDonate","type":"bool"},{"internalType":"bool","name":"beforeSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterAddLiquidityReturnDelta","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidityReturnDelta","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"underlyingCurrency","outputs":[{"internalType":"Currency","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"weth","outputs":[{"internalType":"contract WETH","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapZeroForOne","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperCurrency","outputs":[{"internalType":"Currency","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":{"params":{"delta":"The caller's balance delta after adding liquidity; the sum of principal delta, fees accrued, and hook delta","feesAccrued":"The fees accrued since the last time fees were collected from this position","hookData":"Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook","key":"The key for the pool","params":"The parameters for adding liquidity","sender":"The initial msg.sender for the add liquidity call"},"returns":{"_0":"bytes4 The function selector for the hook","_1":"BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"}},"afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":{"params":{"amount0":"The amount of token0 being donated","amount1":"The amount of token1 being donated","hookData":"Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook","key":"The key for the pool","sender":"The initial msg.sender for the donate call"},"returns":{"_0":"bytes4 The function selector for the hook"}},"afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":{"params":{"key":"The key for the pool being initialized","sender":"The initial msg.sender for the initialize call","sqrtPriceX96":"The sqrt(price) of the pool as a Q64.96","tick":"The current tick after the state of a pool is initialized"},"returns":{"_0":"bytes4 The function selector for the hook"}},"afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":{"params":{"delta":"The caller's balance delta after removing liquidity; the sum of principal delta, fees accrued, and hook delta","feesAccrued":"The fees accrued since the last time fees were collected from this position","hookData":"Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook","key":"The key for the pool","params":"The parameters for removing liquidity","sender":"The initial msg.sender for the remove liquidity call"},"returns":{"_0":"bytes4 The function selector for the hook","_1":"BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"}},"afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":{"params":{"delta":"The amount owed to the caller (positive) or owed to the pool (negative)","hookData":"Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook","key":"The key for the pool","params":"The parameters for the swap","sender":"The initial msg.sender for the swap call"},"returns":{"_0":"bytes4 The function selector for the hook","_1":"int128 The hook's delta in unspecified currency. Positive: the hook is owed/took currency, negative: the hook owes/sent currency"}},"beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"params":{"hookData":"Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook","key":"The key for the pool","params":"The parameters for adding liquidity","sender":"The initial msg.sender for the add liquidity call"},"returns":{"_0":"bytes4 The function selector for the hook"}},"beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":{"params":{"amount0":"The amount of token0 being donated","amount1":"The amount of token1 being donated","hookData":"Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook","key":"The key for the pool","sender":"The initial msg.sender for the donate call"},"returns":{"_0":"bytes4 The function selector for the hook"}},"beforeInitialize(address,(address,address,uint24,int24,address),uint160)":{"params":{"key":"The key for the pool being initialized","sender":"The initial msg.sender for the initialize call","sqrtPriceX96":"The sqrt(price) of the pool as a Q64.96"},"returns":{"_0":"bytes4 The function selector for the hook"}},"beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"params":{"hookData":"Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook","key":"The key for the pool","params":"The parameters for removing liquidity","sender":"The initial msg.sender for the remove liquidity call"},"returns":{"_0":"bytes4 The function selector for the hook"}},"beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"params":{"hookData":"Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook","key":"The key for the pool","params":"The parameters for the swap","sender":"The initial msg.sender for the swap call"},"returns":{"_0":"bytes4 The function selector for the hook","_1":"BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency","_2":"uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)"}},"constructor":{"params":{"_manager":"The Uniswap V4 pool manager","_weth":"The WETH9 contract address"}},"getHookPermissions()":{"details":"Used at deployment to validate the address correctly represents the expected permissions","returns":{"_0":"Permissions struct"}}},"version":1},"userdoc":{"kind":"user","methods":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":{"notice":"The hook called after liquidity is added"},"afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"The hook called after donate"},"afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":{"notice":"The hook called after the state of a pool is initialized"},"afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":{"notice":"The hook called after liquidity is removed"},"afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":{"notice":"The hook called after a swap"},"beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"The hook called before liquidity is added"},"beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"The hook called before donate"},"beforeInitialize(address,(address,address,uint24,int24,address),uint160)":{"notice":"The hook called before the state of a pool is initialized"},"beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"The hook called before liquidity is removed"},"beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"notice":"The hook called before a swap"},"constructor":{"notice":"Creates a new WETH wrapper hook"},"getHookPermissions()":{"notice":"Returns a struct of permissions to signal which hook functions are to be implemented"},"poolManager()":{"notice":"The Uniswap v4 PoolManager contract"},"underlyingCurrency()":{"notice":"The underlying token currency (e.g., ETH)"},"weth()":{"notice":"The WETH9 contract"},"wrapZeroForOne()":{"notice":"Indicates whether wrapping occurs when swapping from token0 to token1"},"wrapperCurrency()":{"notice":"The wrapped token currency (e.g., WETH)"}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/hooks/WETHHook.sol":"WETHHook"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/v4-core/lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/tokens/WETH.sol":{"keccak256":"0x343cf5f6b643864c5728fa9bf057c5708052402b22c5662decce94f5febff514","urls":["bzz-raw://dc3722cf992cc13ff0728660432092d8ae6851f500b24c0aa474c45f2e8c3f2d","dweb:/ipfs/QmVq7veVaBKKdm4AKQiuCXMPGHPuCcPksm7LNuA2ihpN9U"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/base/DeltaResolver.sol":{"keccak256":"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c","urls":["bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36","dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw"],"license":"MIT"},"src/base/ImmutableState.sol":{"keccak256":"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a","urls":["bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337","dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU"],"license":"MIT"},"src/base/hooks/BaseTokenWrapperHook.sol":{"keccak256":"0x4444f619c7fff29d2e9e4ed1802bdc8c0852bec1f1c0a47c34c549466c6a6aca","urls":["bzz-raw://2e587d8588c44d960af1625cd9ee7bf9a33ed568814d7970474072540ffcc83f","dweb:/ipfs/QmctJqdWMgQ9QbiF5ef9NtnNtNcNHfGSQqEQ69gt483f4o"],"license":"MIT"},"src/hooks/WETHHook.sol":{"keccak256":"0x0d0807790d36a280c88c9bef491d4185c7f395f04ff3ed672c1a03cd5bce704b","urls":["bzz-raw://953e607edaf41f825cdac2dd70531e9de0ae0ade74372c08c6957d82da9cb281","dweb:/ipfs/QmRupzgrXGkY81nMJZfd6j7eMH7z7pJrjTtUxkdRESnx3b"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"src/utils/BaseHook.sol":{"keccak256":"0x6268607345149d912996d1c2bac693b2102304cc97c19ec4fef184d6fa390e89","urls":["bzz-raw://d6c0dddffa6c5eb3c10bc45d56d58bc3f4773778322fa10a4acf46e2292b61b3","dweb:/ipfs/Qmc1Srhh6ne5Lsi2Y5BBz8pgPLmJdg8uN1UCeJzKnr6Kra"],"license":"MIT"}},"version":1},"id":106}