{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"},{"name":"_wsteth","type":"address","internalType":"contract IWstETH"}],"stateMutability":"nonpayable"},{"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":"wrapZeroForOne","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"wrapperCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"function","name":"wstETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWstETH"}],"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":"0x610120806040523461041457604081611f468038038091610020828561045b565b833981010312610414578051906001600160a01b038216820361041457602001516001600160a01b038116918282036104145760405163183fc7c960e31b8152602081600481875afa908115610420575f916103da575b5060018060a01b0316906080525f6101a06040516100948161042b565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06040516100f68161042b565b60018152826020820152600160408201528260608201528260808201528260a0820152600160c08201528260e08201528261010082015282610120820152600161014082015282610160820152826101808201520152612000301615156001148015906103cd575b80156103bc575b80156103af575b80156103a2575b8015610395575b8015610385575b8015610379575b801561036d575b8015610361575b8015610351575b8015610345575b8015610339575b801561032d575b61031a57825f604492819460209660a0528160c05283821060e052610100526040519263095ea7b360e01b84526004840152811960248401525af13d15601f3d1160015f5114161716156102e457604051611ac7908161047f823960805181818160f7015281816101f301528181610440015281816107200152818161079a01528181610877015281816109e60152818161122b015281816112a3015281816117760152611836015260a05181818161033c01528181610384015281816104ae01528181610b7b0152610de9015260c05181818161025f015281816103ce01528181610a8d01528181610e8a0152611339015260e05181818161021b015281816108fa0152610a3b015261010051818181610b4301528181610d0e01528181610e57015281816110cb01526111dd0152f35b60405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606490fd5b630732d7b560e51b5f523060045260245ffd5b506001301615156101b2565b506002301615156101ab565b506004301615156101a4565b506008301615156001141561019d565b50601030161515610196565b5060203016151561018f565b50604030161515610188565b5060803016151560011415610181565b506101003016151561017a565b5061020030161515610173565b506104003016151561016c565b506108003016151560011415610165565b506110003016151561015e565b90506020813d602011610418575b816103f56020938361045b565b8101031261041457516001600160a01b0381168103610414575f610077565b5f80fd5b3d91506103e8565b6040513d5f823e3d90fd5b6101c081019081106001600160401b0382111761044757604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176104475760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081630bc6bffc146112f15750806321d0ee7014611279578063259982e5146112015780634aa07e6414611193578063575e24b41461091f5780635d5711a5146108c55780636c2bbe7e1461076e5780636fe7e6eb146107e85780639f063efc1461076e578063b47b2fb114610659578063b6a8b0fa146100cc578063c4e833ce146104d2578063d52f63cf14610464578063dc4c90d3146103f6578063dc98354e146101715763e1b4af69146100cc575f80fd5b3461016d576100da3661156d565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a861135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d576101db61154a565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f000000000000000000000000000000000000000000000000000000000000000015610364576102476116f4565b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169116148061031b575b156102f35760643562ffffff811680910361016d576102cb5760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b7f1213a0ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdcdedda9000000000000000000000000000000000000000000000000000000005f5260045ffd5b50610324611717565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b61036c6116f4565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028857506103b6611717565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d575f6101a06040516105108161160e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c060206040516105738161160e565b60018152818101905f82526040810160018152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f8652610140890196600188526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461016d576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761069161135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101443567ffffffffffffffff811161016d57610707903690600401611380565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d5761077c36611479565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761082061135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5761085361154a565b5060e4358060020b0361016d5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b3461016d576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761095761135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101243567ffffffffffffffff811161016d576109cd903690600401611380565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036101455760e4355f81129182809361118c575b6111645782158061115c575b6111345760c43580151580910361016d577f0000000000000000000000000000000000000000000000000000000000000000151503610dd057508115610ccb5773ffffffffffffffffffffffffffffffffffffffff6020610a8883611699565b610ab47f0000000000000000000000000000000000000000000000000000000000000000913083611757565b6024604051809481937f70a08231000000000000000000000000000000000000000000000000000000008352306004840152165afa908115610c8e575f91610c99575b50604051927fea598cb00000000000000000000000000000000000000000000000000000000084528160048501526020846024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1938415610c8e575f94610c5a575b50610b9f84307f0000000000000000000000000000000000000000000000000000000000000000611816565b15610c4057505f8212610c1857610bcb610bc0610bc5610bc0606095611749565b6116c5565b92611749565b906fffffffffffffffffffffffffffffffff169060801b175b604051907f575e24b400000000000000000000000000000000000000000000000000000000825260208201525f6040820152f35b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91505f8212610c1857610bcb610bc0610bc5606094611749565b9093506020813d602011610c86575b81610c7660209383611658565b8101031261016d57519284610b73565b3d9150610c69565b6040513d5f823e3d90fd5b90506020813d602011610cc3575b81610cb460209383611658565b8101031261016d575183610af7565b3d9150610ca7565b6040517f9576a0c800000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c8e575f91610d9e575b507812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021581021561016d57602073ffffffffffffffffffffffffffffffffffffffff91670de0b6b3a76400008402908082049106151501610a88565b90506020813d602011610dc8575b81610db960209383611658565b8101031261016d575183610d3e565b3d9150610dac565b91801561108257610de082611699565b905b610e0d82307f0000000000000000000000000000000000000000000000000000000000000000611757565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081528260048201526020816024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c8e575f91611050575b507f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821695604051917f70a082310000000000000000000000000000000000000000000000000000000083528160048401526020836024818b5afa928315610c8e575f9361101a575b50610f1690602093943090611816565b6024604051809881937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa948515610c8e575f95610fe6575b508403938411610fb95715610f9f57505f8212610c1857610f82610bc0610bc5610bc0606095611749565b906fffffffffffffffffffffffffffffffff169060801b17610be4565b91505f8212610c1857610f82610bc0610bc5606094611749565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d602011611012575b8161100260209383611658565b8101031261016d57519385610f57565b3d9150610ff5565b9092506020813d602011611048575b8161103660209383611658565b8101031261016d575191610f16610f06565b3d9150611029565b90506020813d60201161107a575b8161106b60209383611658565b8101031261016d575185610e87565b3d915061105e565b6040517fb0e3890000000000000000000000000000000000000000000000000000000000815282600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c8e575f91611102575b5090610de2565b90506020813d60201161112c575b8161111d60209383611658565b8101031261016d5751846110fb565b3d9150611110565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001610a28565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a1c565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d5761120f366113ae565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d57611287366113ae565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c491610144359067ffffffffffffffff821161016d5761147591600401611380565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c49161014435916101643591610184359067ffffffffffffffff821161016d5761147591600401611380565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83011261016d5760249160c4359160e43591610104359067ffffffffffffffff821161016d5761147591600401611380565b6101c0810190811067ffffffffffffffff82111761162b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761162b57604052565b7f80000000000000000000000000000000000000000000000000000000000000008114610fb9575f0390565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610fb9575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b9081602091031261016d575190565b9081600f0b918203610c1857565b909180156118115773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561016d575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c8e576118055750565b5f61180f91611658565b565b505050565b5f915082156118115773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610c8e57611aa5575b50816119365750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561192a57506118ff5750565b6119209060203d602011611923575b6119188183611658565b81019061173a565b50565b503d61190e565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156119d95750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561192a57506118ff5750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b611ab29194505f90611658565b5f925f6118b756fea164736f6c634300081a000a","sourceMap":"850:3525:107:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;850:3525:107;;;;;;;;;-1:-1:-1;;;;;850:3525:107;;;;;;;;;;-1:-1:-1;;;1532:15:107;;850:3525;;1532:15;850:3525;1532:15;;;;;;;;-1:-1:-1;1532:15:107;;;-1:-1:-1;850:3525:107;;;;;;;782:26:96;;;-1:-1:-1;850:3525:107;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;782:26:96;850:3525:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;850:3525:107;;;;;;:::i;:::-;3507:4:105;850:3525:107;;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3507:4:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;782:26:96;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3507:4:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3507:4:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;3457:568:105;;850:3525:107;3457:568:105;850:3525:107;;899:4:149;16467:29:58;:34;;3507:4:105;3729:74:58;;;:166;;;-1:-1:-1;3729:265:58;;;;-1:-1:-1;3729:362:58;;;;-1:-1:-1;3729:467:58;;;;-1:-1:-1;3729:570:58;;;;-1:-1:-1;3729:652:58;;;;-1:-1:-1;3729:732:58;;;;-1:-1:-1;3729:818:58;;;;-1:-1:-1;3729:902:58;;;;-1:-1:-1;3729:1009:58;;;;-1:-1:-1;3729:1114:58;;;;-1:-1:-1;3729:1236:58;;;;-1:-1:-1;3729:1384:58;;;;-1:-1:-1;3712:1491:58;;3195:26:105;-1:-1:-1;4906:1377:35;3195:26:105;;;850:3525:107;3195:26:105;850:3525:107;3195:26:105;3231:32;850:3525:107;3231:32:105;734:50:80;;;850:3525:107;3273:39:105;850:3525:107;1602:16;850:3525;4906:1377:35;;;;;;;1532:15:107;4906:1377:35;;;1700:17:107;;4906:1377:35;;;;;;;;;;;3507:4:105;-1:-1:-1;4906:1377:35;;;;;850:3525:107;;;;;;;;;;;782:26:96;850:3525:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;850:3525:107;;;1532:15;850:3525;;;;4906:1377:35;850:3525:107;;;-1:-1:-1;;;4906:1377:35;850:3525:107;;;;;;3712:1491:58;5138:28;;;-1:-1:-1;1084:176:54;899:4:149;1532:15:107;1084:176:54;;-1:-1:-1;1084:176:54;3729:1384:58;5052:61;3507:4:105;899::149;16467:29:58;:34;;3729:1384;;:1236;4907:58;850:3525:107;899:4:149;16467:29:58;:34;;3729:1236;;:1114;4794:49;1532:15:107;899:4:149;16467:29:58;:34;;3729:1114;;:1009;4688:50;850:3525:107;899:4:149;16467:29:58;:34;;3507:4:105;4651:87:58;;3729:1009;;:902;4594:37;850:3525:107;899:4:149;16467:29:58;:34;;3729:902;;:818;4509:38;850:3525:107;899:4:149;16467:29:58;:34;;3729:818;;:732;4426:35;850:3525:107;899:4:149;16467:29:58;:34;;3729:732;;:652;4345:36;782:26:96;899:4:149;16467:29:58;:34;;3507:4:105;4319:62:58;;3729:652;;:570;4252:47;850:3525:107;899:4:149;16467:29:58;:34;;3729:570;;:467;4148:48;850:3525:107;899:4:149;16467:29:58;:34;;3729:467;;:362;4047:44;850:3525:107;899:4:149;16467:29:58;:34;;3729:362;;:265;3949:45;850:3525:107;899:4:149;16467:29:58;:34;;3507:4:105;3915:79:58;;3729:265;;:166;3854:41;850:3525:107;899:4:149;16467:29:58;:34;;3729:166;;1532:15:107;;;850:3525;1532:15;;850:3525;1532:15;;;;;;850:3525;1532:15;;;:::i;:::-;;;850:3525;;;;;-1:-1:-1;;;;;850:3525:107;;;;;;1532:15;;;850:3525;-1:-1:-1;850:3525:107;;1532:15;;;-1:-1:-1;1532:15:107;;;850:3525;;;-1:-1:-1;850:3525:107;;;;;;;;;;;;-1:-1:-1;;;;;850:3525:107;;;;;;;:::o;:::-;;;;-1:-1:-1;850:3525:107;;;;;-1:-1:-1;850:3525:107;;;;;;-1:-1:-1;;850:3525:107;;;;-1:-1:-1;;;;;850:3525:107;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081630bc6bffc146112f15750806321d0ee7014611279578063259982e5146112015780634aa07e6414611193578063575e24b41461091f5780635d5711a5146108c55780636c2bbe7e1461076e5780636fe7e6eb146107e85780639f063efc1461076e578063b47b2fb114610659578063b6a8b0fa146100cc578063c4e833ce146104d2578063d52f63cf14610464578063dc4c90d3146103f6578063dc98354e146101715763e1b4af69146100cc575f80fd5b3461016d576100da3661156d565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a861135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d576101db61154a565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f000000000000000000000000000000000000000000000000000000000000000015610364576102476116f4565b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169116148061031b575b156102f35760643562ffffff811680910361016d576102cb5760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b7f1213a0ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdcdedda9000000000000000000000000000000000000000000000000000000005f5260045ffd5b50610324611717565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b61036c6116f4565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028857506103b6611717565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d575f6101a06040516105108161160e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c060206040516105738161160e565b60018152818101905f82526040810160018152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f8652610140890196600188526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461016d576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761069161135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101443567ffffffffffffffff811161016d57610707903690600401611380565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d5761077c36611479565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761082061135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5761085361154a565b5060e4358060020b0361016d5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b3461016d576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761095761135d565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101243567ffffffffffffffff811161016d576109cd903690600401611380565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036101455760e4355f81129182809361118c575b6111645782158061115c575b6111345760c43580151580910361016d577f0000000000000000000000000000000000000000000000000000000000000000151503610dd057508115610ccb5773ffffffffffffffffffffffffffffffffffffffff6020610a8883611699565b610ab47f0000000000000000000000000000000000000000000000000000000000000000913083611757565b6024604051809481937f70a08231000000000000000000000000000000000000000000000000000000008352306004840152165afa908115610c8e575f91610c99575b50604051927fea598cb00000000000000000000000000000000000000000000000000000000084528160048501526020846024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1938415610c8e575f94610c5a575b50610b9f84307f0000000000000000000000000000000000000000000000000000000000000000611816565b15610c4057505f8212610c1857610bcb610bc0610bc5610bc0606095611749565b6116c5565b92611749565b906fffffffffffffffffffffffffffffffff169060801b175b604051907f575e24b400000000000000000000000000000000000000000000000000000000825260208201525f6040820152f35b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91505f8212610c1857610bcb610bc0610bc5606094611749565b9093506020813d602011610c86575b81610c7660209383611658565b8101031261016d57519284610b73565b3d9150610c69565b6040513d5f823e3d90fd5b90506020813d602011610cc3575b81610cb460209383611658565b8101031261016d575183610af7565b3d9150610ca7565b6040517f9576a0c800000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c8e575f91610d9e575b507812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021581021561016d57602073ffffffffffffffffffffffffffffffffffffffff91670de0b6b3a76400008402908082049106151501610a88565b90506020813d602011610dc8575b81610db960209383611658565b8101031261016d575183610d3e565b3d9150610dac565b91801561108257610de082611699565b905b610e0d82307f0000000000000000000000000000000000000000000000000000000000000000611757565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081528260048201526020816024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c8e575f91611050575b507f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821695604051917f70a082310000000000000000000000000000000000000000000000000000000083528160048401526020836024818b5afa928315610c8e575f9361101a575b50610f1690602093943090611816565b6024604051809881937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa948515610c8e575f95610fe6575b508403938411610fb95715610f9f57505f8212610c1857610f82610bc0610bc5610bc0606095611749565b906fffffffffffffffffffffffffffffffff169060801b17610be4565b91505f8212610c1857610f82610bc0610bc5606094611749565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d602011611012575b8161100260209383611658565b8101031261016d57519385610f57565b3d9150610ff5565b9092506020813d602011611048575b8161103660209383611658565b8101031261016d575191610f16610f06565b3d9150611029565b90506020813d60201161107a575b8161106b60209383611658565b8101031261016d575185610e87565b3d915061105e565b6040517fb0e3890000000000000000000000000000000000000000000000000000000000815282600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c8e575f91611102575b5090610de2565b90506020813d60201161112c575b8161111d60209383611658565b8101031261016d5751846110fb565b3d9150611110565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001610a28565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a1c565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d5761120f366113ae565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d57611287366113ae565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c491610144359067ffffffffffffffff821161016d5761147591600401611380565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c49161014435916101643591610184359067ffffffffffffffff821161016d5761147591600401611380565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83011261016d5760249160c4359160e43591610104359067ffffffffffffffff821161016d5761147591600401611380565b6101c0810190811067ffffffffffffffff82111761162b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761162b57604052565b7f80000000000000000000000000000000000000000000000000000000000000008114610fb9575f0390565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610fb9575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b9081602091031261016d575190565b9081600f0b918203610c1857565b909180156118115773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561016d575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c8e576118055750565b5f61180f91611658565b565b505050565b5f915082156118115773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610c8e57611aa5575b50816119365750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561192a57506118ff5750565b6119209060203d602011611923575b6119188183611658565b81019061173a565b50565b503d61190e565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156119d95750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561192a57506118ff5750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b611ab29194505f90611658565b5f925f6118b756fea164736f6c634300081a000a","sourceMap":"850:3525:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;;;;;850:3525:107;672:11:96;850:3525:107;650:10:96;:34;646:63;;3575:20:149;850:3525:107;3575:20:149;850:3525:107;;3575:20:149;646:63:96;693:16;850:3525:107;693:16:96;850:3525:107;;693:16:96;850:3525:107;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;672:11:96;850:3525:107;650:10:96;:34;646:63;;4523:14:105;;;;4553:17;;:::i;:::-;850:3525:107;4574:18:105;;850:3525:107;;;448:51:80;4553:79:105;;;4523:206;4744:12;4740:43;;4797:11;850:3525:107;;;;;;;;;4793:45:105;;850:3525:107;;;4856:32:105;850:3525:107;;;4793:45:105;4822:16;850:3525:107;4822:16:105;850:3525:107;;4822:16:105;4740:43;4765:18;850:3525:107;4765:18:105;850:3525:107;;4765:18:105;4553:79;4596:17;;;:::i;:::-;850:3525:107;4617:15:105;;850:3525:107;;;448:51:80;4553:79:105;;4523:206;4649:17;;:::i;:::-;850:3525:107;4670:15:105;;850:3525:107;;;448:51:80;4649:79:105;;4523:206;4649:79;4689:17;;;:::i;:::-;850:3525:107;4710:18:105;;850:3525:107;;;448:51:80;4523:206:105;;850:3525:107;;;;;;;;;;;;;;;411:41:96;850:3525:107;;;;;;;;;;;;;;;;;;;2196:41:105;850:3525:107;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:4:105;850:3525:107;;3457:568:105;;;850:3525:107;;;;;3457:568:105;;3507:4;850:3525:107;;;3457:568:105;;850:3525:107;;;;3457:568:105;;850:3525:107;;;;3457:568:105;;850:3525:107;;;;3457:568:105;;3507:4;850:3525:107;;;3457:568:105;;850:3525:107;;;;;3457:568:105;;850:3525:107;;;;;3457:568:105;;850:3525:107;;;;;3457:568:105;;850:3525:107;3507:4:105;850:3525:107;;;3457:568:105;;850:3525:107;;;;;;3457:568:105;;850:3525:107;;;;3457:568:105;850:3525:107;;;;;;;;;3507:4:105;850:3525:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;850:3525:107;672:11:96;850:3525:107;650:10:96;:34;646:63;;3575:20:149;850:3525:107;3575:20:149;850:3525:107;;3575:20:149;850:3525:107;;;;;;;:::i;:::-;672:11:96;;;;;;;850:3525:107;672:11:96;850:3525:107;650:10:96;:34;646:63;;3575:20:149;850:3525:107;3575:20:149;850:3525:107;;3575:20:149;850:3525:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;672:11:96;850:3525:107;650:10:96;:34;646:63;;3575:20:149;850:3525:107;3575:20:149;850:3525:107;;3575:20:149;850:3525:107;;;;;;;;;;;;;;2813:36:105;850:3525:107;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;850:3525:107;672:11:96;850:3525:107;650:10:96;;:34;646:63;;5940:22:105;850:3525:107;;5940:26:105;;;;;5980:38;;;850:3525:107;5976:75:105;;6065:13;;:40;;;850:3525:107;6061:78:105;;850:3525:107;;;;;;;;;;6154:14:105;850:3525:107;;6154:35:105;;;-1:-1:-1;6274:104:105;;;;850:3525:107;;6297:23:105;;;:::i;:::-;1993:16:107;1958:18;1986:4;;1993:16;;:::i;:::-;850:3525;;;2118:68;;;;850:3525;2118:68;;1986:4;850:3525;2118:68;;850:3525;;2118:68;;;;;;;850:3525;2118:68;;;6274:104:105;850:3525:107;;;2295:35;850:3525;2295:35;;;850:3525;2295:35;;850:3525;;2295:6;850:3525;2295:6;850:3525;;2295:6;850:3525;2295:35;;;;;;;850:3525;2295:35;;;6274:104:105;1986:4:107;2380:13;1986:4;;2348:15;2380:13;:::i;:::-;6528:98:105;;;1875:5:67;850:3525:107;1875:5:67;;1871:49;;6670:34:105;6671:33;6543:36;6544:35;850:3525:107;6544:35:105;;:::i;:::-;6543:36;:::i;:::-;6528:98;6671:33;:::i;6670:34::-;453:132:79;;;;;;;6150:1154:105;850:3525:107;;;7322:26:105;850:3525:107;;;;;;;;;;;;1871:49:67;1882:25;850:3525:107;814:96:54;850:3525:107;;814:96:54;6528:98:105;1875:5:67;;850:3525:107;1875:5:67;;1871:49;;6670:34:105;6671:33;6582:44;850:3525:107;6582:44:105;;:::i;2295:35:107:-;;;;850:3525;2295:35;;850:3525;2295:35;;;;;;850:3525;2295:35;;;:::i;:::-;;;850:3525;;;;;2295:35;;;;;;;-1:-1:-1;2295:35:107;;;850:3525;;;;;;;;;2118:68;;;850:3525;2118:68;;850:3525;2118:68;;;;;;850:3525;2118:68;;;:::i;:::-;;;850:3525;;;;;2118:68;;;;;;-1:-1:-1;2118:68:107;;6274:104:105;850:3525:107;;;3726:23;;850:3525;3726:6;850:3525;3726:6;850:3525;3726:6;850:3525;3726:23;;;;;;;850:3525;3726:23;;;6274:104:105;2274:488:34;;;;655:4;2274:488;;;;;;;850:3525:107;;2274:488:34;655:4;2274:488;;;;;;;;;;;6274:104:105;;3726:23:107;;;850:3525;3726:23;;850:3525;3726:23;;;;;;850:3525;3726:23;;;:::i;:::-;;;850:3525;;;;;3726:23;;;;;;-1:-1:-1;3726:23:107;;6150:1154:105;6810:138;;;;;6849:23;;;:::i;:::-;6810:138;;2653:13:107;2646:4;;2621:15;2653:13;:::i;:::-;850:3525;;;2748:34;;;850:3525;2748:34;;850:3525;;2748:6;850:3525;2748:6;850:3525;;2748:6;850:3525;2748:34;;;;;;;850:3525;2748:34;;;6810:138:105;2957:18:107;;850:3525;;;;;;;2934:75;850:3525;2934:75;;;850:3525;2934:75;;850:3525;;2934:75;850:3525;2934:75;;;;;;;;;850:3525;2934:75;;;6810:138:105;2646:4:107;3062:15;2646:4;850:3525;2646:4;;;3062:15;;:::i;:::-;850:3525;;;3122:75;;;;850:3525;3122:75;;850:3525;3122:75;;850:3525;3122:75;;;;;;;850:3525;3122:75;;;6810:138:105;850:3525:107;;;;;;;;7098:97:105;;;1875:5:67;850:3525:107;1875:5:67;;1871:49;;7239:34:105;7240:33;7113:38;7114:37;850:3525:107;7114:37:105;;:::i;7239:34::-;453:132:79;;;;;;;6150:1154:105;;7098:97;1875:5:67;;850:3525:107;1875:5:67;;1871:49;;7239:34:105;7240:33;7154:41;850:3525:107;7154:41:105;;:::i;850:3525:107:-;;;;;;;;;;3122:75;;;;850:3525;3122:75;;850:3525;3122:75;;;;;;850:3525;3122:75;;;:::i;:::-;;;850:3525;;;;;3122:75;;;;;;;-1:-1:-1;3122:75:107;;2934;;;;850:3525;2934:75;;850:3525;2934:75;;;;;;850:3525;2934:75;;;:::i;:::-;;;850:3525;;;;;;3062:15;2934:75;;;;;-1:-1:-1;2934:75:107;;2748:34;;;850:3525;2748:34;;850:3525;2748:34;;;;;;850:3525;2748:34;;;:::i;:::-;;;850:3525;;;;;2748:34;;;;;;-1:-1:-1;2748:34:107;;6810:138:105;850:3525:107;;;4179:41;;;850:3525;4179:41;;850:3525;;4179:6;850:3525;4179:6;850:3525;4179:6;850:3525;4179:41;;;;;;;850:3525;4179:41;;;6810:138:105;;;;;4179:41:107;;;850:3525;4179:41;;850:3525;4179:41;;;;;;850:3525;4179:41;;;:::i;:::-;;;850:3525;;;;;4179:41;;;;;;-1:-1:-1;4179:41:107;;6061:78:105;6114:25;850:3525:107;6114:25:105;850:3525:107;;6114:25:105;6065:40;;850:3525:107;6065:40:105;;5976:75;6027:24;850:3525:107;6027:24:105;850:3525:107;;6027:24:105;5980:38;;850:3525:107;5980:38:105;;850:3525:107;;;;;;;;;;;;;;;1055:31;850:3525;;;;;;;;;;;:::i;:::-;672:11:96;;;;;850:3525:107;672:11:96;850:3525:107;650:10:96;:34;646:63;;5239:21:105;850:3525:107;5239:21:105;850:3525:107;;5239:21:105;850:3525:107;;;;;;;:::i;:::-;672:11:96;;;;;850:3525:107;672:11:96;850:3525:107;650:10:96;:34;646:63;;3575:20:149;850:3525:107;3575:20:149;850:3525:107;;3575:20:149;850:3525:107;;;;;;;;;;;;2302:44:105;850:3525:107;2302:44:105;850:3525:107;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;850:3525:107;;;;;-1:-1:-1;850:3525:107;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;4689:17:105;850:3525:107;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;1460:151:67:-;;850:3525:107;;;1558:6:67;;;1554:50;;1460:151::o;1270:173:93:-;;;1362:11;;1358:24;;850:3525:107;1391:11:93;850:3525:107;1391:45:93;;;;;1372:1;850:3525:107;;1391:45:93;850:3525:107;;;;;;1391:45:93;;;;;850:3525:107;1391:45:93;;850:3525:107;1391:45:93;;;850:3525:107;;;;;;;;;;1391:45:93;;;;;;;;1270:173;:::o;1391:45::-;1372:1;1391:45;;;:::i;:::-;1270:173::o;1358:24::-;1375:7;;;:::o;1766:346::-;1866:1;;-1:-1:-1;1856:11:93;;1852:24;;850:3525:107;1886:11:93;850:3525:107;1886:26:93;;;;;;850:3525:107;;1886:26:93;850:3525:107;1886:26:93;;850:3525:107;;;1886:26:93;;;;;850:3525:107;1866:1:93;1886:26;;;;;;;;;;;;;1766:346;-1:-1:-1;4998:58:80;1926:24:93;;850:3525:107;;;;1886:26:93;850:3525:107;;1966:35:93;;;;850:3525:107;1966:35:93;;;;;;;;;;;;1922:184;1766:346::o;1966:35::-;;;850:3525:107;1966:35:93;850:3525:107;1966:35:93;;;;;;;;:::i;:::-;;;;;:::i;:::-;;1766:346::o;1966:35::-;;;;;;850:3525:107;;;;;;;;;;1922:184:93;1765:2574:80;;;850:3525:107;;1765:2574:80;2238:1774;1765:2574;;2238:1774;;;;;;;;;;1886:26:93;2238:1774:80;;;1886:26:93;2238:1774:80;;;;;;;;;;;;;;;;;;;;;;850:3525:107;2238:1774:80;;;;;4124:8;4120:209;;850:3525:107;;;;1886:26:93;850:3525:107;;2075:20:93;;;;850:3525:107;2075:20:93;;;;;;;;;;;;1922:184;1766:346::o;4120:209:80:-;3741:1424:54;;2238:1774:80;3741:1424:54;;;;850:3525:107;3741:1424:54;;3710:21;3741:1424;;1886:26:93;3741:1424:54;;;2238:1774:80;1886:26:93;3741:1424:54;;;;2238:1774:80;3741:1424:54;;;;;;;;;;;;;;;;;;;;;4268:28:80;3741:1424:54;;;;1886:26:93;3741:1424:54;;;;;;;;;;1886:26:93;;;;;1866:1;1886:26;;:::i;:::-;1866:1;1886:26;;;","linkReferences":{},"immutableReferences":{"52637":[{"start":247,"length":32},{"start":499,"length":32},{"start":1088,"length":32},{"start":1824,"length":32},{"start":1946,"length":32},{"start":2167,"length":32},{"start":2534,"length":32},{"start":4651,"length":32},{"start":4771,"length":32},{"start":6006,"length":32},{"start":6198,"length":32}],"53560":[{"start":828,"length":32},{"start":900,"length":32},{"start":1198,"length":32},{"start":2939,"length":32},{"start":3561,"length":32}],"53564":[{"start":607,"length":32},{"start":974,"length":32},{"start":2701,"length":32},{"start":3722,"length":32},{"start":4921,"length":32}],"53567":[{"start":539,"length":32},{"start":2298,"length":32},{"start":2619,"length":32}],"54116":[{"start":2883,"length":32},{"start":3342,"length":32},{"start":3671,"length":32},{"start":4299,"length":32},{"start":4573,"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","wrapZeroForOne()":"5d5711a5","wrapperCurrency()":"d52f63cf","wstETH()":"4aa07e64"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"contract IWstETH\",\"name\":\"_wsteth\",\"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\":\"wrapZeroForOne\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperCurrency\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wstETH\",\"outputs\":[{\"internalType\":\"contract IWstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements dynamic exchange rate wrapping/unwrapping between stETH and wstETHwstETH represents stETH with accrued staking rewards, maintaining a dynamic exchange rate\",\"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\":{\"details\":\"Initializes with wstETH as wrapper token and stETH as underlying token\",\"params\":{\"_manager\":\"The Uniswap V4 pool manager\",\"_wsteth\":\"The wstETH contract address\"}},\"getHookPermissions()\":{\"details\":\"Used at deployment to validate the address correctly represents the expected permissions\",\"returns\":{\"_0\":\"Permissions struct\"}}},\"title\":\"Wrapped Staked ETH (wstETH) 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 wstETH 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)\"},\"wrapZeroForOne()\":{\"notice\":\"Indicates whether wrapping occurs when swapping from token0 to token1\"},\"wrapperCurrency()\":{\"notice\":\"The wrapped token currency (e.g., WETH)\"},\"wstETH()\":{\"notice\":\"The wstETH contract used for wrapping/unwrapping operations\"}},\"notice\":\"Hook for wrapping/unwrapping stETH/wstETH in Uniswap V4 pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/hooks/WstETHHook.sol\":\"WstETHHook\"},\"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/\"],\"viaIR\":true},\"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/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"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/WstETHHook.sol\":{\"keccak256\":\"0x7acc945f5e95ccf627f3486e49fb954eb22f0004a0d3fdfa67313cb53794b6a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b03951d341836cfefc035ac063ed65821e31cc4c7934cba3938f1827bf14f300\",\"dweb:/ipfs/QmQBABtYyBHAbb4JonxYEJfUwAfqKFaFa1XAim2qTVEsN1\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/external/IWstETH.sol\":{\"keccak256\":\"0x1123fab9f0ccfcea5a0b6e1f3514ef72ea76f6ed33e13f8e1b8fc0b3aeb274a4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://17e6bc50f7f4f1ec12237947aa686451011fceba5d1db4c59dd8ea7f0e92f378\",\"dweb:/ipfs/QmZTnzsaDLhe37hQspRMASj4MqVhP1inyRT77STve6SvjL\"]},\"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":"contract IWstETH","name":"_wsteth","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":"wrapZeroForOne","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperCurrency","outputs":[{"internalType":"Currency","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wstETH","outputs":[{"internalType":"contract IWstETH","name":"","type":"address"}]}],"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":{"details":"Initializes with wstETH as wrapper token and stETH as underlying token","params":{"_manager":"The Uniswap V4 pool manager","_wsteth":"The wstETH 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 wstETH 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)"},"wrapZeroForOne()":{"notice":"Indicates whether wrapping occurs when swapping from token0 to token1"},"wrapperCurrency()":{"notice":"The wrapped token currency (e.g., WETH)"},"wstETH()":{"notice":"The wstETH contract used for wrapping/unwrapping operations"}},"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/WstETHHook.sol":"WstETHHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"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/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"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/WstETHHook.sol":{"keccak256":"0x7acc945f5e95ccf627f3486e49fb954eb22f0004a0d3fdfa67313cb53794b6a3","urls":["bzz-raw://b03951d341836cfefc035ac063ed65821e31cc4c7934cba3938f1827bf14f300","dweb:/ipfs/QmQBABtYyBHAbb4JonxYEJfUwAfqKFaFa1XAim2qTVEsN1"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/interfaces/external/IWstETH.sol":{"keccak256":"0x1123fab9f0ccfcea5a0b6e1f3514ef72ea76f6ed33e13f8e1b8fc0b3aeb274a4","urls":["bzz-raw://17e6bc50f7f4f1ec12237947aa686451011fceba5d1db4c59dd8ea7f0e92f378","dweb:/ipfs/QmZTnzsaDLhe37hQspRMASj4MqVhP1inyRT77STve6SvjL"],"license":"GPL-3.0"},"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":107}