{"abi":[{"type":"constructor","inputs":[{"name":"delegateManager","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clear","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountCollected","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"donate","inputs":[{"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":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"extsload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"startSlot","type":"bytes32","internalType":"bytes32"},{"name":"nSlots","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"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":"tick","type":"int24","internalType":"int24"}],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"isOperator","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyLiquidity","inputs":[{"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":"callerDelta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeesAccrued","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFee","inputs":[{"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":"newProtocolFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"controller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"settleFor","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"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":"swapDelta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"sync","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"take","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicLPFee","inputs":[{"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":"newDynamicLPFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Donate","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"currency0","type":"address","indexed":true,"internalType":"Currency"},{"name":"currency1","type":"address","indexed":true,"internalType":"Currency"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"tickSpacing","type":"int24","indexed":false,"internalType":"int24"},{"name":"hooks","type":"address","indexed":false,"internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"ModifyLiquidity","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":false,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidityDelta","type":"int256","indexed":false,"internalType":"int256"},{"name":"salt","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerUpdated","inputs":[{"name":"protocolFeeController","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeUpdated","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"protocolFee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyUnlocked","inputs":[]},{"type":"error","name":"CurrenciesOutOfOrderOrEqual","inputs":[{"name":"currency0","type":"address","internalType":"address"},{"name":"currency1","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotSettled","inputs":[]},{"type":"error","name":"DelegateCallNotAllowed","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"ManagerLocked","inputs":[]},{"type":"error","name":"MustClearExactPositiveDelta","inputs":[]},{"type":"error","name":"NonzeroNativeValue","inputs":[]},{"type":"error","name":"PoolNotInitialized","inputs":[]},{"type":"error","name":"ProtocolFeeCurrencySynced","inputs":[]},{"type":"error","name":"ProtocolFeeTooLarge","inputs":[{"name":"fee","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"SwapAmountCannotBeZero","inputs":[]},{"type":"error","name":"TickSpacingTooLarge","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"TickSpacingTooSmall","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"UnauthorizedDynamicLPFeeUpdate","inputs":[]}],"bytecode":{"object":"0x60c0346100b057601f61394f38819003918201601f19168301916001600160401b038311848410176100b4578084926020946040528339810103126100b057516001600160a01b03811681036100b0575f80546001600160a01b03191633908117825560405192917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a33060805260a05261388690816100c98239608051816124f5015260a051816105640152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062fdd58e1461022357806301ffc9a71461021e578063095bcdb6146102195780630b0d9c091461021457806311da60b41461020f578063156e29f61461020a5780631e2eaeaf14610205578063234266d7146102005780632d771389146101fb57806335fd631a146101f65780633dd45adb146101f1578063426a8493146101ec57806348c89491146101e757806352759651146101e2578063558a7297146101dd578063598af9e7146101d85780635a6bcfda146101d35780636276cbbe146101ce5780637e87ce7d146101c957806380f0b44c146101c45780638161b874146101bf5780638da5cb5b146101ba57806397e8cd4e146101b55780639bf6645f146101b0578063a5841194146101ab578063b6363cf2146101a6578063dbd035ff146101a1578063f02de3b21461019c578063f135baaa14610197578063f2fde38b14610192578063f3cd914c1461018d578063f5298aca146101885763fe99049a14610183575f80fd5b611e22565b611d7e565b611cbb565b611c0b565b611bd1565b611b80565b611b33565b611a95565b6119c6565b611979565b6118a0565b611850565b6116fe565b61163b565b61152f565b611223565b61114d565b6110a3565b610fae565b610ec1565b610d5a565b610c73565b610bb0565b610b32565b610a83565b61092e565b610732565b610662565b6105b2565b610484565b6103bf565b6102bf565b61024a565b73ffffffffffffffffffffffffffffffffffffffff81160361024657565b5f80fd5b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561028581610228565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600460205260405f20905f52602052602060405f2054604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361024657807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115610354575b506040519015158152f35b7f0f632fb3000000000000000000000000000000000000000000000000000000009150145f610349565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610246576004356103b481610228565b906024359060443590565b34610246576103cd3661037e565b9091335f52600460205260405f20835f5260205260405f2090815483810390811161047f5773ffffffffffffffffffffffffffffffffffffffff92551690815f5260046020526104288360405f20905f5260205260405f2090565b6104338282546120b0565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991819081015b0390a460405160018152602090f35b0390f35b612076565b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004356104bf81610228565b602435906104cc82610228565b6044357fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5773ffffffffffffffffffffffffffffffffffffffff610588936105176124de565b81604051947f0b0d9c090000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526064820152606481526105626084826107d6565b7f0000000000000000000000000000000000000000000000000000000000000000612545565b005b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761060a6124de565b6106576106486040517f11da60b4000000000000000000000000000000000000000000000000000000006020820152600481526105626024826107d6565b602080825183010191016120bd565b604051908152602090f35b34610246576106703661037e565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761058892610706610562926106aa6124de565b6040519485937f156e29f60000000000000000000000000000000000000000000000000000000060208601526024850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826107d6565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435545f5260205ff35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff8211176107b557604052565b61076c565b6060810190811067ffffffffffffffff8211176107b557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107b557604052565b60a4359062ffffff8216820361024657565b359062ffffff8216820361024657565b60a435908160020b820361024657565b60c435908160020b820361024657565b35908160020b820361024657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a0910112610246576040519060a0820182811067ffffffffffffffff8211176107b557604052816004356108bc81610228565b81526024356108ca81610228565b60208201526108d96044610829565b60408201526108e86064610859565b60608201526080608435916108fc83610228565b0152565b9181601f840112156102465782359167ffffffffffffffff8311610246576020838186019501011161024657565b34610246576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761096736610867565b60a43560c43560e43567ffffffffffffffff81116102465761098d903690600401610900565b90917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761047b9461070661064894610a559461056294610a73986109d56124de565b6040519788967f234266d7000000000000000000000000000000000000000000000000000000006020890152602488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c486015260e48501526101006101048501526101248401916120cc565b6040519081529081906020820190565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465773ffffffffffffffffffffffffffffffffffffffff600435610ad381610228565b610ae1825f5416331461210a565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435602435906040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610ba757506020600191610b8b565b60408186030190f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435610be681610228565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a57610a7361064861047b92610c1f6124de565b73ffffffffffffffffffffffffffffffffffffffff604051917f3dd45adb000000000000000000000000000000000000000000000000000000006020840152166024820152602481526105626044826107d6565b346102465773ffffffffffffffffffffffffffffffffffffffff610c963661037e565b91929092335f526005602052610ccd8160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043567ffffffffffffffff811161024657610da9903690600401610900565b90610db26124de565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610e9957610e1a915f91610de661259c565b60405193849283927f91dd73460000000000000000000000000000000000000000000000000000000084526004840161220c565b038183335af1908115610e94575f91610e72575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c610e6d5761047b90610e616125c2565b60405191829182610d12565b612466565b610e8e91503d805f833e610e8681836107d6565b8101906121a9565b5f610e2e565b612220565b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657610ef936610867565b610f01610817565b6280000062ffffff60408401511614801590610f6a575b610f4257610f3d60a061058893610f2e846125e7565b205f52600660205260405f2090565b612624565b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff8060808401511616331415610f18565b60243590811515820361024657565b60a43590811515820361024657565b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435610fe981610228565b73ffffffffffffffffffffffffffffffffffffffff611006610f90565b91335f52600360205261103a8160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b921515927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a360405160018152602090f35b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004356110de81610228565b6111356024356110ed81610228565b73ffffffffffffffffffffffffffffffffffffffff60443593165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5f918252602090815260409182902054915191825290f35b34610246576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761118636610867565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610246576040516111bc81610799565b6111c4610839565b81526111ce610849565b602082015260e4356040820152610104356060820152610124359167ffffffffffffffff831161024657611209611211933690600401610900565b92909161222b565b60408051928352602083019190915290f35b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761125b36610867565b60a43561126781610228565b61126f6124de565b606082019061127f825160020b90565b617fff8160020b1361152a5750815160020b600181126115255750825173ffffffffffffffffffffffffffffffffffffffff169260208101936112d6855173ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff8083169082161015611506575050608081019161131d835173ffffffffffffffffffffffffffffffffffffffff1690565b92604083019361134061133c611336875162ffffff1690565b8361275b565b1590565b6114eb5761047b61143888886113ed7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d643873ffffffffffffffffffffffffffffffffffffffff8b6114d38c8c8c61148061146561145d6114536113f26113b06113ab8b5162ffffff1690565b6128df565b6113d8888a6113d38a5173ffffffffffffffffffffffffffffffffffffffff1690565b6128fc565b8760a08a209e8f5f52600660205260405f2090565b6129ea565b9e8f9761141e8989836114198b5173ffffffffffffffffffffffffffffffffffffffff1690565b612dd2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b9d5173ffffffffffffffffffffffffffffffffffffffff1690565b975162ffffff1690565b9a5160020b90565b915173ffffffffffffffffffffffffffffffffffffffff1690565b9086604051978897169b1699869373ffffffffffffffffffffffffffffffffffffffff608094819398979462ffffff60a089019a16885260020b602088015216604086015216606084015260020b910152565b0390a460405160029190910b81529081906020820190565b73ffffffffffffffffffffffffffffffffffffffff16612819565b73ffffffffffffffffffffffffffffffffffffffff918216911661270d565b6126b1565b612683565b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761156736610867565b61156f610817565b9073ffffffffffffffffffffffffffffffffffffffff600254163303611613576103e9610fff831610623e900062fff00084161016156116085761160360a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99220926115ed816115e8865f52600660205260405f2090565b612ecd565b60405162ffffff90911681529081906020820190565b0390a2005b62ffffff821661285b565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561167681610228565b602435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a576105889173ffffffffffffffffffffffffffffffffffffffff604051927f80f0b44c0000000000000000000000000000000000000000000000000000000060208501521660248301526044820152604481526105626064826107d6565b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561173981610228565b6024359061174682610228565b60443573ffffffffffffffffffffffffffffffffffffffff6002541633036116135773ffffffffffffffffffffffffffffffffffffffff831615158061180d575b6118085761047b92610a73918061180057506117c18173ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b549283915b6117ee8173ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b6117f98482546120a3565b9055612f21565b9283916117c6565b61248e565b5073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c811690841614611787565b34610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465773ffffffffffffffffffffffffffffffffffffffff6004356118f081610228565b165f526001602052602060405f2054604051908152f35b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102465760043567ffffffffffffffff811161024657826023820112156102465780600401359267ffffffffffffffff84116102465760248460051b83010111610246576024019190565b346102465761198736611907565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610ba75750602080916119aa565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435611a0181610228565b73ffffffffffffffffffffffffffffffffffffffff81169081611a455750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b611a4e90612fee565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602060ff611b27600435611ad781610228565b73ffffffffffffffffffffffffffffffffffffffff60243591611af983610228565b165f526003845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b3461024657611b4136611907565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610ba7575060208091611b64565b34610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004355c5f5260205ff35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246577fffffffffffffffffffffffff0000000000000000000000000000000000000000600435611c6781610228565b73ffffffffffffffffffffffffffffffffffffffff5f5491611c8c828416331461210a565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b34610246576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657611cf436610867565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261024657604051611d2a816107ba565b611d32610f9f565b815260c435602082015260e435611d4881610228565b6040820152610104359067ffffffffffffffff82116102465761047b92611d76610a73933690600401610900565b92909161235a565b3461024657611d8c3661037e565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a576105889261070661056292611dc66124de565b6040519485937ff5298aca0000000000000000000000000000000000000000000000000000000060208601526024850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b346102465760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435611e5d81610228565b602435611e6981610228565b604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885973ffffffffffffffffffffffffffffffffffffffff60643593611ef186611ee4848716968733141580612037575b611f535773ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b905f5260205260405f2090565b611efc8682546120a3565b9055611f2a86611ee48373ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b611f358682546120b0565b9055604080513381526020810196909652911693908190810161046c565b611fa683611ee433611f838573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ff6575b505073ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b611fff916120a3565b61202f84611ee433611f838673ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b555f89611fd0565b5061207161133c61206a33611f838573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b5460ff1690565b611ebc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9190820391821161047f57565b9190820180921161047f57565b90816020910312610246575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b1561211157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b67ffffffffffffffff81116107b557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6020818303126102465780519067ffffffffffffffff8211610246570181601f82011215610246578051906121dd8261216f565b926121eb60405194856107d6565b8284526020838301011161024657815f9260208093018386015e8301015290565b91602061221d9381815201916120cc565b90565b6040513d5f823e3d90fd5b929190917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a57612340936107066122f393610562936060612331976122736124de565b6040519788967f5a6bcfda000000000000000000000000000000000000000000000000000000006020890152602488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60c4870152602081015160020b60e4870152604081015161010487015201516101248501526101406101448501526101648401916120cc565b60208082518301019101612344565b9091565b9190826040910312610246576020825192015190565b929190917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761221d93610706612436936105629373ffffffffffffffffffffffffffffffffffffffff6040610648986123b76124de565b81519889977ff3cd914c0000000000000000000000000000000000000000000000000000000060208a0152602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560c4880152602081015160e48801520151166101048501526101206101248501526101448401916120cc565b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361251d57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f918291602082519201905af43d15612594573d906125638261216f565b9161257160405193846107d6565b82523d5f602084013e5b156125835790565b8051908161258f575f80fd5b602001fd5b60609061257b565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b62ffffff16620f424081116125f95750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061267f9061263283613097565b8254907cffffff00000000000000000000000000000000000000000000000000009060d01b16907fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff161790565b9055565b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff60449281604051937f6e6c9830000000000000000000000000000000000000000000000000000000008552166004840152166024820152fd5b60808116158061280d575b6127e357604081161580612801575b6127e357610400811615806127f5575b6127e357610100811615806127e9575b6127e35773ffffffffffffffffffffffffffffffffffffffff81166127c3575062ffffff1662800000141590565b613fff1615908115916127d4575090565b62800000915062ffffff161490565b50505f90565b50600181161515612795565b50600281161515612785565b50600481161515612775565b50600881161515612766565b73ffffffffffffffffffffffffffffffffffffffff907fe65af6a0000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6280000062ffffff8216146128f75761221d816125e7565b505f90565b73ffffffffffffffffffffffffffffffffffffffff8116330361291e57505050565b612000811661292c57505050565b73ffffffffffffffffffffffffffffffffffffffff6129e7936129cc604051947fdc98354e000000000000000000000000000000000000000000000000000000006020870152336024870152604486019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b1660e483015260e482526129e2610104836107d6565b6130dd565b50565b909291815473ffffffffffffffffffffffffffffffffffffffff16612daa5773fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d86011611612da45773ffffffffffffffffffffffffffffffffffffffff841690612a7e8260201b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8081612ab2612aac846134a0565b60ff1690565b9260808410612d9757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183011c915b0160401b90800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000161717171717171717171717171717693627a301d71055774c8502917ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568301612c859060801d90565b61267f93612d1b926fdb2df09e81959a81455e260799a0632f90910160801d600290810b92900b90828203612d66575090505b612cd6819773ffffffffffffffffffffffffffffffffffffffff1690565b9076ffffff00000000000000000000000000000000000000009060a01b16907fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff161790565b907cffffff00000000000000000000000000000000000000000000000000009060d01b16907fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff161790565b73ffffffffffffffffffffffffffffffffffffffff612d848461352d565b1611612d905750612cb8565b9050612cb8565b905082607f031b91612ae2565b8361289d565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919273ffffffffffffffffffffffffffffffffffffffff82163303612df9575b50505050565b611000821615612df35773ffffffffffffffffffffffffffffffffffffffff612ec394612ea3604051957f6fe7e6eb000000000000000000000000000000000000000000000000000000006020880152336024880152604487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b1660e484015260020b61010483015261010482526129e2610124836107d6565b505f808080612df3565b90612ed782613097565b79ffffff000000000000000000000000000000000000000000000082549160b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16179055565b90919073ffffffffffffffffffffffffffffffffffffffff8116612f5b57505f808080612f4f94865af11590565b612f565750565b6132fd565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215612fd35750565b73ffffffffffffffffffffffffffffffffffffffff1661321d565b73ffffffffffffffffffffffffffffffffffffffff811661300e57504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610e94575f9161306e575090565b61221d915060203d602011613090575b61308881836107d6565b8101906120bd565b503d61307e565b5473ffffffffffffffffffffffffffffffffffffffff16156130b557565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190918251925f8060208301958682865af115613180575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561314c575b505061314757565b6124b6565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f8061313f565b9091505191517fffffffff00000000000000000000000000000000000000000000000000000000811692600481106131d0575b8373ffffffffffffffffffffffffffffffffffffffff84166133bd565b73ffffffffffffffffffffffffffffffffffffffff929350907fffffffff00000000000000000000000000000000000000000000000000000000809260040360031b1b161691905f6131b3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b907fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b8015610246577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b60020b908160ff1d82810118620d89e881116138735763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116613857575b6004811661383b575b6008811661381f575b60108116613803575b602081166137e7575b604081166137cb575b608081166137af575b6101008116613793575b6102008116613777575b610400811661375b575b610800811661373f575b6110008116613723575b6120008116613707575b61400081166136eb575b61800081166136cf575b6201000081166136b3575b620200008116613698575b62040000811661367d575b6208000016613664575b5f1261363d575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613636565b6b048a170391f7dc42444e8fa290910260801c9061362f565b6d2216e584f5fa1ea926041bedfe9890920260801c91613625565b916e5d6af8dedb81196699c329225ee6040260801c9161361a565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161360f565b916f31be135f97d08fd981231505542fcfa60260801c91613604565b916f70d869a156d2a1b890bb3df62baf32f70260801c916135fa565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916135f0565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916135e6565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916135dc565b916ff3392b0822b70005940c7a398e4b70f30260801c916135d2565b916ff987a7253ac413176f2b074cf7815e540260801c916135c8565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916135be565b916ffe5dee046a99a2a811c461f1969c30530260801c916135b4565b916fff2ea16466c96a3843ec78b326b528610260801c916135ab565b916fff973b41fa98c081472e6896dfb254c00260801c916135a2565b916fffcb9843d60f6159c9db58835c9266440260801c91613599565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613590565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613587565b916ffff97272373d413259a46990580e213a0260801c9161357e565b826126df56fea164736f6c634300081a000a","sourceMap":"1460:7651:96:-:0;;;;;;;;;;;;;-1:-1:-1;;1460:7651:96;;;;-1:-1:-1;;;;;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1460:7651:96;;;;;;-1:-1:-1;1460:7651:96;;-1:-1:-1;;;;;;1460:7651:96;2102:10;1460:7651;;;;;;;;2102:10;1075:40:24;-1:-1:-1;;1075:40:24;719:4:32;700:24;;2124:34:96;;1460:7651;;;;;;700:24:32;1460:7651:96;;;;;2124:34;1460:7651;;;;;;;-1:-1:-1;1460:7651:96;;;;;;-1:-1:-1;1460:7651:96;;;;;-1:-1:-1;1460:7651:96","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8062fdd58e1461022357806301ffc9a71461021e578063095bcdb6146102195780630b0d9c091461021457806311da60b41461020f578063156e29f61461020a5780631e2eaeaf14610205578063234266d7146102005780632d771389146101fb57806335fd631a146101f65780633dd45adb146101f1578063426a8493146101ec57806348c89491146101e757806352759651146101e2578063558a7297146101dd578063598af9e7146101d85780635a6bcfda146101d35780636276cbbe146101ce5780637e87ce7d146101c957806380f0b44c146101c45780638161b874146101bf5780638da5cb5b146101ba57806397e8cd4e146101b55780639bf6645f146101b0578063a5841194146101ab578063b6363cf2146101a6578063dbd035ff146101a1578063f02de3b21461019c578063f135baaa14610197578063f2fde38b14610192578063f3cd914c1461018d578063f5298aca146101885763fe99049a14610183575f80fd5b611e22565b611d7e565b611cbb565b611c0b565b611bd1565b611b80565b611b33565b611a95565b6119c6565b611979565b6118a0565b611850565b6116fe565b61163b565b61152f565b611223565b61114d565b6110a3565b610fae565b610ec1565b610d5a565b610c73565b610bb0565b610b32565b610a83565b61092e565b610732565b610662565b6105b2565b610484565b6103bf565b6102bf565b61024a565b73ffffffffffffffffffffffffffffffffffffffff81160361024657565b5f80fd5b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561028581610228565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600460205260405f20905f52602052602060405f2054604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361024657807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115610354575b506040519015158152f35b7f0f632fb3000000000000000000000000000000000000000000000000000000009150145f610349565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610246576004356103b481610228565b906024359060443590565b34610246576103cd3661037e565b9091335f52600460205260405f20835f5260205260405f2090815483810390811161047f5773ffffffffffffffffffffffffffffffffffffffff92551690815f5260046020526104288360405f20905f5260205260405f2090565b6104338282546120b0565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991819081015b0390a460405160018152602090f35b0390f35b612076565b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004356104bf81610228565b602435906104cc82610228565b6044357fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5773ffffffffffffffffffffffffffffffffffffffff610588936105176124de565b81604051947f0b0d9c090000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526064820152606481526105626084826107d6565b7f0000000000000000000000000000000000000000000000000000000000000000612545565b005b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761060a6124de565b6106576106486040517f11da60b4000000000000000000000000000000000000000000000000000000006020820152600481526105626024826107d6565b602080825183010191016120bd565b604051908152602090f35b34610246576106703661037e565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761058892610706610562926106aa6124de565b6040519485937f156e29f60000000000000000000000000000000000000000000000000000000060208601526024850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826107d6565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435545f5260205ff35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff8211176107b557604052565b61076c565b6060810190811067ffffffffffffffff8211176107b557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176107b557604052565b60a4359062ffffff8216820361024657565b359062ffffff8216820361024657565b60a435908160020b820361024657565b60c435908160020b820361024657565b35908160020b820361024657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a0910112610246576040519060a0820182811067ffffffffffffffff8211176107b557604052816004356108bc81610228565b81526024356108ca81610228565b60208201526108d96044610829565b60408201526108e86064610859565b60608201526080608435916108fc83610228565b0152565b9181601f840112156102465782359167ffffffffffffffff8311610246576020838186019501011161024657565b34610246576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761096736610867565b60a43560c43560e43567ffffffffffffffff81116102465761098d903690600401610900565b90917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761047b9461070661064894610a559461056294610a73986109d56124de565b6040519788967f234266d7000000000000000000000000000000000000000000000000000000006020890152602488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c486015260e48501526101006101048501526101248401916120cc565b6040519081529081906020820190565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465773ffffffffffffffffffffffffffffffffffffffff600435610ad381610228565b610ae1825f5416331461210a565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435602435906040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610ba757506020600191610b8b565b60408186030190f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435610be681610228565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a57610a7361064861047b92610c1f6124de565b73ffffffffffffffffffffffffffffffffffffffff604051917f3dd45adb000000000000000000000000000000000000000000000000000000006020840152166024820152602481526105626044826107d6565b346102465773ffffffffffffffffffffffffffffffffffffffff610c963661037e565b91929092335f526005602052610ccd8160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043567ffffffffffffffff811161024657610da9903690600401610900565b90610db26124de565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610e9957610e1a915f91610de661259c565b60405193849283927f91dd73460000000000000000000000000000000000000000000000000000000084526004840161220c565b038183335af1908115610e94575f91610e72575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c610e6d5761047b90610e616125c2565b60405191829182610d12565b612466565b610e8e91503d805f833e610e8681836107d6565b8101906121a9565b5f610e2e565b612220565b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657610ef936610867565b610f01610817565b6280000062ffffff60408401511614801590610f6a575b610f4257610f3d60a061058893610f2e846125e7565b205f52600660205260405f2090565b612624565b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff8060808401511616331415610f18565b60243590811515820361024657565b60a43590811515820361024657565b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435610fe981610228565b73ffffffffffffffffffffffffffffffffffffffff611006610f90565b91335f52600360205261103a8160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b921515927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a360405160018152602090f35b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004356110de81610228565b6111356024356110ed81610228565b73ffffffffffffffffffffffffffffffffffffffff60443593165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5f918252602090815260409182902054915191825290f35b34610246576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761118636610867565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610246576040516111bc81610799565b6111c4610839565b81526111ce610849565b602082015260e4356040820152610104356060820152610124359167ffffffffffffffff831161024657611209611211933690600401610900565b92909161222b565b60408051928352602083019190915290f35b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761125b36610867565b60a43561126781610228565b61126f6124de565b606082019061127f825160020b90565b617fff8160020b1361152a5750815160020b600181126115255750825173ffffffffffffffffffffffffffffffffffffffff169260208101936112d6855173ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff8083169082161015611506575050608081019161131d835173ffffffffffffffffffffffffffffffffffffffff1690565b92604083019361134061133c611336875162ffffff1690565b8361275b565b1590565b6114eb5761047b61143888886113ed7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d643873ffffffffffffffffffffffffffffffffffffffff8b6114d38c8c8c61148061146561145d6114536113f26113b06113ab8b5162ffffff1690565b6128df565b6113d8888a6113d38a5173ffffffffffffffffffffffffffffffffffffffff1690565b6128fc565b8760a08a209e8f5f52600660205260405f2090565b6129ea565b9e8f9761141e8989836114198b5173ffffffffffffffffffffffffffffffffffffffff1690565b612dd2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b9d5173ffffffffffffffffffffffffffffffffffffffff1690565b975162ffffff1690565b9a5160020b90565b915173ffffffffffffffffffffffffffffffffffffffff1690565b9086604051978897169b1699869373ffffffffffffffffffffffffffffffffffffffff608094819398979462ffffff60a089019a16885260020b602088015216604086015216606084015260020b910152565b0390a460405160029190910b81529081906020820190565b73ffffffffffffffffffffffffffffffffffffffff16612819565b73ffffffffffffffffffffffffffffffffffffffff918216911661270d565b6126b1565b612683565b346102465760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465761156736610867565b61156f610817565b9073ffffffffffffffffffffffffffffffffffffffff600254163303611613576103e9610fff831610623e900062fff00084161016156116085761160360a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99220926115ed816115e8865f52600660205260405f2090565b612ecd565b60405162ffffff90911681529081906020820190565b0390a2005b62ffffff821661285b565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561167681610228565b602435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a576105889173ffffffffffffffffffffffffffffffffffffffff604051927f80f0b44c0000000000000000000000000000000000000000000000000000000060208501521660248301526044820152604481526105626064826107d6565b346102465760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465760043561173981610228565b6024359061174682610228565b60443573ffffffffffffffffffffffffffffffffffffffff6002541633036116135773ffffffffffffffffffffffffffffffffffffffff831615158061180d575b6118085761047b92610a73918061180057506117c18173ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b549283915b6117ee8173ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b6117f98482546120a3565b9055612f21565b9283916117c6565b61248e565b5073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c811690841614611787565b34610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102465773ffffffffffffffffffffffffffffffffffffffff6004356118f081610228565b165f526001602052602060405f2054604051908152f35b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102465760043567ffffffffffffffff811161024657826023820112156102465780600401359267ffffffffffffffff84116102465760248460051b83010111610246576024019190565b346102465761198736611907565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610ba75750602080916119aa565b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435611a0181610228565b73ffffffffffffffffffffffffffffffffffffffff81169081611a455750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b611a4e90612fee565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b346102465760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602060ff611b27600435611ad781610228565b73ffffffffffffffffffffffffffffffffffffffff60243591611af983610228565b165f526003845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b3461024657611b4136611907565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610ba7575060208091611b64565b34610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246576004355c5f5260205ff35b346102465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610246577fffffffffffffffffffffffff0000000000000000000000000000000000000000600435611c6781610228565b73ffffffffffffffffffffffffffffffffffffffff5f5491611c8c828416331461210a565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b34610246576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657611cf436610867565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261024657604051611d2a816107ba565b611d32610f9f565b815260c435602082015260e435611d4881610228565b6040820152610104359067ffffffffffffffff82116102465761047b92611d76610a73933690600401610900565b92909161235a565b3461024657611d8c3661037e565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a576105889261070661056292611dc66124de565b6040519485937ff5298aca0000000000000000000000000000000000000000000000000000000060208601526024850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b346102465760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657600435611e5d81610228565b602435611e6981610228565b604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885973ffffffffffffffffffffffffffffffffffffffff60643593611ef186611ee4848716968733141580612037575b611f535773ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b905f5260205260405f2090565b611efc8682546120a3565b9055611f2a86611ee48373ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b611f358682546120b0565b9055604080513381526020810196909652911693908190810161046c565b611fa683611ee433611f838573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ff6575b505073ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b611fff916120a3565b61202f84611ee433611f838673ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b555f89611fd0565b5061207161133c61206a33611f838573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b5460ff1690565b611ebc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9190820391821161047f57565b9190820180921161047f57565b90816020910312610246575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b1561211157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b67ffffffffffffffff81116107b557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6020818303126102465780519067ffffffffffffffff8211610246570181601f82011215610246578051906121dd8261216f565b926121eb60405194856107d6565b8284526020838301011161024657815f9260208093018386015e8301015290565b91602061221d9381815201916120cc565b90565b6040513d5f823e3d90fd5b929190917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a57612340936107066122f393610562936060612331976122736124de565b6040519788967f5a6bcfda000000000000000000000000000000000000000000000000000000006020890152602488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60c4870152602081015160020b60e4870152604081015161010487015201516101248501526101406101448501526101648401916120cc565b60208082518301019101612344565b9091565b9190826040910312610246576020825192015190565b929190917fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c1561058a5761221d93610706612436936105629373ffffffffffffffffffffffffffffffffffffffff6040610648986123b76124de565b81519889977ff3cd914c0000000000000000000000000000000000000000000000000000000060208a0152602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560c4880152602081015160e48801520151166101048501526101206101248501526101448401916120cc565b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361251d57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f918291602082519201905af43d15612594573d906125638261216f565b9161257160405193846107d6565b82523d5f602084013e5b156125835790565b8051908161258f575f80fd5b602001fd5b60609061257b565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b62ffffff16620f424081116125f95750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061267f9061263283613097565b8254907cffffff00000000000000000000000000000000000000000000000000009060d01b16907fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff161790565b9055565b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff60449281604051937f6e6c9830000000000000000000000000000000000000000000000000000000008552166004840152166024820152fd5b60808116158061280d575b6127e357604081161580612801575b6127e357610400811615806127f5575b6127e357610100811615806127e9575b6127e35773ffffffffffffffffffffffffffffffffffffffff81166127c3575062ffffff1662800000141590565b613fff1615908115916127d4575090565b62800000915062ffffff161490565b50505f90565b50600181161515612795565b50600281161515612785565b50600481161515612775565b50600881161515612766565b73ffffffffffffffffffffffffffffffffffffffff907fe65af6a0000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6280000062ffffff8216146128f75761221d816125e7565b505f90565b73ffffffffffffffffffffffffffffffffffffffff8116330361291e57505050565b612000811661292c57505050565b73ffffffffffffffffffffffffffffffffffffffff6129e7936129cc604051947fdc98354e000000000000000000000000000000000000000000000000000000006020870152336024870152604486019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b1660e483015260e482526129e2610104836107d6565b6130dd565b50565b909291815473ffffffffffffffffffffffffffffffffffffffff16612daa5773fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d86011611612da45773ffffffffffffffffffffffffffffffffffffffff841690612a7e8260201b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8081612ab2612aac846134a0565b60ff1690565b9260808410612d9757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183011c915b0160401b90800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000161717171717171717171717171717693627a301d71055774c8502917ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568301612c859060801d90565b61267f93612d1b926fdb2df09e81959a81455e260799a0632f90910160801d600290810b92900b90828203612d66575090505b612cd6819773ffffffffffffffffffffffffffffffffffffffff1690565b9076ffffff00000000000000000000000000000000000000009060a01b16907fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff161790565b907cffffff00000000000000000000000000000000000000000000000000009060d01b16907fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff161790565b73ffffffffffffffffffffffffffffffffffffffff612d848461352d565b1611612d905750612cb8565b9050612cb8565b905082607f031b91612ae2565b8361289d565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919273ffffffffffffffffffffffffffffffffffffffff82163303612df9575b50505050565b611000821615612df35773ffffffffffffffffffffffffffffffffffffffff612ec394612ea3604051957f6fe7e6eb000000000000000000000000000000000000000000000000000000006020880152336024880152604487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b1660e484015260020b61010483015261010482526129e2610124836107d6565b505f808080612df3565b90612ed782613097565b79ffffff000000000000000000000000000000000000000000000082549160b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16179055565b90919073ffffffffffffffffffffffffffffffffffffffff8116612f5b57505f808080612f4f94865af11590565b612f565750565b6132fd565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215612fd35750565b73ffffffffffffffffffffffffffffffffffffffff1661321d565b73ffffffffffffffffffffffffffffffffffffffff811661300e57504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610e94575f9161306e575090565b61221d915060203d602011613090575b61308881836107d6565b8101906120bd565b503d61307e565b5473ffffffffffffffffffffffffffffffffffffffff16156130b557565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190918251925f8060208301958682865af115613180575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561314c575b505061314757565b6124b6565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f8061313f565b9091505191517fffffffff00000000000000000000000000000000000000000000000000000000811692600481106131d0575b8373ffffffffffffffffffffffffffffffffffffffff84166133bd565b73ffffffffffffffffffffffffffffffffffffffff929350907fffffffff00000000000000000000000000000000000000000000000000000000809260040360031b1b161691905f6131b3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b907fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b8015610246577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b60020b908160ff1d82810118620d89e881116138735763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116613857575b6004811661383b575b6008811661381f575b60108116613803575b602081166137e7575b604081166137cb575b608081166137af575b6101008116613793575b6102008116613777575b610400811661375b575b610800811661373f575b6110008116613723575b6120008116613707575b61400081166136eb575b61800081166136cf575b6201000081166136b3575b620200008116613698575b62040000811661367d575b6208000016613664575b5f1261363d575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613636565b6b048a170391f7dc42444e8fa290910260801c9061362f565b6d2216e584f5fa1ea926041bedfe9890920260801c91613625565b916e5d6af8dedb81196699c329225ee6040260801c9161361a565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161360f565b916f31be135f97d08fd981231505542fcfa60260801c91613604565b916f70d869a156d2a1b890bb3df62baf32f70260801c916135fa565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916135f0565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916135e6565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916135dc565b916ff3392b0822b70005940c7a398e4b70f30260801c916135d2565b916ff987a7253ac413176f2b074cf7815e540260801c916135c8565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916135be565b916ffe5dee046a99a2a811c461f1969c30530260801c916135b4565b916fff2ea16466c96a3843ec78b326b528610260801c916135ab565b916fff973b41fa98c081472e6896dfb254c00260801c916135a2565b916fffcb9843d60f6159c9db58835c9266440260801c91613599565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613590565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613587565b916ffff97272373d413259a46990580e213a0260801c9161357e565b826126df56fea164736f6c634300081a000a","sourceMap":"1460:7651:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;1460:7651:96;;;;;-1:-1:-1;1460:7651:96;;-1:-1:-1;1460:7651:96;;;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2762:25:28;1460:7651:96;;2762:25:28;;:100;;;;;1460:7651:96;;;;;;;;;;2762:100:28;1460:7651:96;2837:25:28;;;2762:100;;;1460:7651:96;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1292:10:28;;;-1:-1:-1;1460:7651:96;;;;;-1:-1:-1;1460:7651:96;;-1:-1:-1;1460:7651:96;;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;;;;;;-1:-1:-1;1460:7651:96;;;;1328:23:28;1460:7651:96;;-1:-1:-1;1460:7651:96;;;;;;;;;;;1328:23:28;:33;1460:7651:96;;;1328:33:28;:::i;:::-;1460:7651:96;;;;;1292:10:28;1460:7651:96;;;;;;;;;;1377:54:28;;1460:7651:96;;;;1377:54:28;;;;1460:7651:96;;1449:4:28;1460:7651:96;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;837:84:53;;2272:18:96;2268:59;;1460:7651;6296:97;1169:76:32;;;:::i;:::-;1460:7651:96;;;6328:64;1460:7651;;6328:64;;;1460:7651;;6328:64;;1460:7651;;;;;;;;;;;6328:64;;;;;;:::i;:::-;6310:16;6296:97;:::i;:::-;1460:7651;2268:59;2292:22;-1:-1:-1;814:96:46;1460:7651:96;-1:-1:-1;814:96:46;1460:7651:96;;;;;;;;837:84:53;;2272:18:96;2268:59;;1169:76:32;;:::i;:::-;6656:29:96;6561:77;1460:7651;;;6593:44;;;;1460:7651;6593:44;;;;;;:::i;6561:77::-;6593:44;1460:7651;;;6656:29;;;;;;:::i;:::-;1460:7651;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;2272:18:96;2268:59;;7400:91;1169:76:32;7432:58:96;;1169:76:32;;;:::i;:::-;1460:7651:96;;7432:58;;;1460:7651;7432:58;;;;;;;1460:7651;;;;;;;;;;;;;;;;;;;;7432:58;;;;;;;;;:::i;1460:7651::-;;;;;;;;;;;;;411:99:30;-1:-1:-1;411:99:30;1460:7651:96;-1:-1:-1;411:99:30;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;;;2272:18:96;2268:59;;1460:7651;1169:76:32;1460:7651:96;5464:132;1169:76:32;1460:7651:96;1169:76:32;5509:77:96;1169:76:32;5614:34:96;1169:76:32;;;:::i;:::-;1460:7651:96;;5509:77;;;1460:7651;5509:77;;;;;;;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5614:34::-;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;756:44:24;1460:7651:96;-1:-1:-1;1460:7651:96;;764:10:24;:19;756:44;:::i;:::-;1460:7651:96;;;1153:34:34;1460:7651:96;;;1153:34:34;1460:7651:96;1202:40:34;-1:-1:-1;1202:40:34;;1460:7651:96;;;;;;;;;;;;;;;;552:981:30;1460:7651:96;656:871:30;;1460:7651:96;656:871:30;1460:7651:96;656:871:30;;;1460:7651:96;656:871:30;;;;;;;;;;;1460:7651:96;;656:871:30;;;;;;;;;;;;;;;;;;;;1460:7651:96;656:871:30;;;;;1460:7651:96;656:871:30;;;;;;1460:7651:96;;;;;;;;;;;;;:::i;:::-;837:84:53;;2272:18:96;2268:59;;6994:29;6885:91;1460:7651;1169:76:32;;;:::i;:::-;1460:7651:96;;;6917:58;1460:7651;;6917:58;;;1460:7651;6917:58;;;1460:7651;6917:58;;;;;;;:::i;1460:7651::-;;;;;;;;:::i;:::-;2125:10:28;;;;;-1:-1:-1;1460:7651:96;2115:9:28;1460:7651:96;;2115:30:28;1460:7651:96;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;2115:30:28;1460:7651:96;-1:-1:-1;1460:7651:96;;;;;-1:-1:-1;1460:7651:96;;;;;;;;2125:10:28;2174:41;1460:7651:96;2125:10:28;2174:41;;1460:7651:96;;;2233:4:28;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1169:76:32;;;:::i;:::-;837:84:53;;2485:60:96;;2696:48;2556:4;-1:-1:-1;2556:4:96;;;:::i;:::-;1460:7651;;2696:48;;;;;1460:7651;2696:48;;1460:7651;2696:48;;;:::i;:::-;;2712:10;;;2696:48;;;;;;;-1:-1:-1;2696:48:96;;;1460:7651;622:89:54;;;2755:75:96;;1460:7651;2840:4;;;:::i;:::-;1460:7651;;;;;;;:::i;2755:75::-;2790:38;:::i;2696:48::-;;;;;;-1:-1:-1;2696:48:96;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2485:60::-;2508:24;-1:-1:-1;814:96:46;1460:7651:96;-1:-1:-1;814:96:46;1460:7651:96;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;552:8:51;1460:7651:96;7879:7;;;1460:7651;;1379:24:51;7878:23:96;;:59;;;1460:7651;7874:142;;8093:10;1460:7651;8113:15;8025:24;;;;:::i;:::-;357:173:108;1460:7651:96;;8093:6;1460:7651;;;;;;;8093:10;8113:15;:::i;7874:142::-;7953:39;814:96:46;;;;;7878:59:96;7927:9;1460:7651;7927:9;;;;1460:7651;;;7905:10;:32;;7878:59;;1460:7651;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;2355:10:28;;-1:-1:-1;1460:7651:96;2344:10:28;1460:7651:96;;2344:32:28;1460:7651:96;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;2344:32:28;1460:7651:96;;;;;;;;;;;;;;;;;;;;2355:10:28;2403:43;1460:7651:96;2355:10:28;2403:43;;1460:7651:96;;1449:4:28;1460:7651:96;;;;;;;;;;;;;;;;;;;;;:::i;:::-;880:108:28;1460:7651:96;;;;;:::i;:::-;;;;;;-1:-1:-1;1460:7651:96;880:108:28;1460:7651:96;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;880:108:28;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;4491:24;1460:7651;;;;;;:::i;:::-;4491:24;;;;:::i;:::-;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;1169:76:32;;:::i;:::-;3121:15:96;;;1460:7651;;;;;;;;;1676:15:64;1460:7651:96;;;3121:34;3117:96;;-1:-1:-1;1460:7651:96;;;;;3227:34;;3223:96;;-1:-1:-1;1915:25:96;;1460:7651;;3350:13;;;;1915:25;;;;1460:7651;;;;1915:25;3333:30;1460:7651;;;;;;;887:51:107;;3329:202:96;;3545:9;;;;;1460:7651;;;;;;;;;3574:7;;;;1460:7651;3544:38;3545:37;1460:7651;;;;;;;;3545:37;;:::i;:::-;3544:38;;1460:7651;3544:38;3540:109;;1460:7651;1915:25;1460:7651;;3807:10;4129:101;1460:7651;;4129:101;1460:7651;;;;;;1915:25;3807:42;3675:25;1460:7651;;;;;;;;3675:25;:::i;:::-;8968:283:50;1460:7651:96;;;;;;;;;;8968:283:50;:::i;:::-;357:173:108;1460:7651:96;357:173:108;;3807:10:96;;1460:7651;;8093:6;1460:7651;;;;;;;3807:10;:42;:::i;:::-;1460:7651;;;9343:318:50;1460:7651:96;;;;;;;;;;;9343:318:50;:::i;:::-;1915:25:96;1460:7651;;;;1915:25;;;1460:7651;;;;1915:25;1460:7651;;;;;;;;;;;;;;;;;;;;;;;3574:7;1460:7651;;;;;;;4129:101;;1915:25;1460:7651;1915:25;;;;;;;1460:7651;1915:25;;;1460:7651;;;;;;1915:25;;;1460:7651;;1915:25;;;1460:7651;;1915:25;;;1460:7651;;;1915:25;;1460:7651;1915:25;4129:101;;;;3574:7;1460:7651;;;;;;;;;;;;;;;;3540:109;1460:7651;;3630:18;:::i;3329:202::-;1460:7651;;;;;;3476:30;:::i;3223:96::-;3303:15;:::i;3117:96::-;3197:15;:::i;1460:7651::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;1393:21:34;1460:7651:96;;1379:10:34;:35;1375:76;;1088:252:58;;;;;;;;;;;1465:36:34;1461:97;;1658:38;1460:7651:96;1658:38:34;357:173:108;;8901:10:96;1628:14:34;8901:10:96;;;1460:7651;;8093:6;1460:7651;;;;;;;8901:10;1628:14:34;:::i;:::-;1460:7651:96;;;;;;;;;;;;;;;;1658:38:34;;;;1460:7651:96;1461:97:34;1460:7651:96;;;1503:55:34;:::i;1375:76::-;1416:22;-1:-1:-1;814:96:46;1460:7651:96;-1:-1:-1;814:96:46;1460:7651:96;;;;;;;;;;;;;;;;:::i;:::-;;;837:84:53;;;2272:18:96;2268:59;;7155:94;1460:7651;;;;7187:61;1460:7651;;7187:61;;;1460:7651;;7187:61;;1460:7651;;;;;;7187:61;;;;;;:::i;1460:7651::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;1917:21:34;1460:7651:96;;1903:10:34;:35;1899:76;;1460:7651:96;;;4998:58:107;3544:38:96;1989:77:34;;;1460:7651:96;1985:257:34;;1460:7651:96;;2421:15:34;;2271:11;;;2286:29;;;1460:7651:96;;;;2286:19:34;1460:7651:96;;;;;;;2286:29:34;1460:7651:96;2270:54:34;;;;2334:29;;1460:7651:96;;;;2286:19:34;1460:7651:96;;;;;;;2334:29:34;:48;1460:7651:96;;;2334:48:34;:::i;:::-;1460:7651:96;;2421:15:34;:::i;2270:54::-;;;;;;1985:257;2184:45;:::i;1989:77::-;-1:-1:-1;1460:7651:96;629:81:45;;1460:7651:96;;;;;448:51:107;1989:77:34;;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1460:7651:96;819:71:34;1460:7651:96;;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;658:936:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1460:7651:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;4998:58:107;5802:24:96;;766:73:45;;-1:-1:-1;766:73:45;;1460:7651:96;5798:341;6031:24;;;:::i;:::-;937:173:45;;;;;1460:7651:96;;;;;;;;;;;;;;697:88:28;1460:7651:96;;;;;:::i;:::-;;;;;;;;:::i;:::-;;-1:-1:-1;1460:7651:96;697:88:28;1460:7651:96;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;697:88:28;1460:7651:96;;;;;;;;;;;;;;;;;:::i;:::-;1664:936:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1460:7651:96;;;;;;;;;;;;;931:36:34;1460:7651:96;;;;;;;;;;;;;;;;;;;;;422:99:31;-1:-1:-1;422:99:31;1460:7651:96;-1:-1:-1;422:99:31;1460:7651:96;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1460:7651:96;;756:44:24;1460:7651:96;;;764:10:24;:19;756:44;:::i;:::-;1460:7651:96;;;;;;-1:-1:-1;1460:7651:96;764:10:24;1424:42;-1:-1:-1;1424:42:24;;1460:7651:96;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4963:22;1460:7651;;;;;;:::i;:::-;4963:22;;;;:::i;1460:7651::-;;;;;;;:::i;:::-;837:84:53;;2272:18:96;2268:59;;7644:93;1169:76:32;7676:60:96;;1169:76:32;;;:::i;:::-;1460:7651:96;;7676:60;;;1460:7651;7676:60;;;;;;;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;1928:50:28;1460:7651:96;;;;1837:21:28;1460:7651:96;1837:17:28;1460:7651:96;;;1594:10:28;;;:20;;:55;;;1460:7651:96;1590:237:28;;1460:7651:96;;;;;;;;;;;;1837:17:28;1460:7651:96;;;;;;;;;;1837:21:28;:31;1460:7651:96;;;1837:31:28;:::i;:::-;1460:7651:96;;1879:23:28;:19;;;1460:7651:96;;;;;;;;;;;;1879:23:28;:33;1460:7651:96;;;1879:33:28;:::i;:::-;1460:7651:96;;;;;1594:10:28;1460:7651:96;;;;;;;;;;;;;;;;;1928:50:28;1460:7651:96;1590:237:28;1683:33;1594:10;1683:29;1594:10;1683:17;;1460:7651:96;;;;1683:9:28;1460:7651:96;;;;;;;1683:17:28;1460:7651:96;;;;;;;;;;;;1683:33:28;1460:7651:96;1734:28:28;1745:17;1734:28;;1730:86;;1590:237;;;1460:7651:96;;;;;;;;;;;;1730:86:28;1800:16;;;:::i;:::-;1764:33;1594:10;1764:29;1594:10;1764:17;;1460:7651:96;;;;1683:9:28;1460:7651:96;;;;;;;1764:33:28;1460:7651:96;1730:86:28;;;;1594:55;:10;1618:31;1619:30;;1594:10;1619:18;;1460:7651:96;;;;1619:10:28;1460:7651:96;;;;;;;1619:30:28;1460:7651:96;;;;;1618:31:28;1594:55;;1460:7651:96;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1460:7651:96;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;2230:115;;;;;837:84:53;;2272:18:96;2268:59;;4702:48;1169:76:32;1460:7651:96;;1169:76:32;4598::96;1169::32;1460:7651:96;4553:131;1169:76:32;;;:::i;:::-;1460:7651:96;;4598:76;;;1460:7651;4598:76;;;;;;;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4598:76;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4553:131::-;4598:76;1460:7651;;;4702:48;;;;;;:::i;:::-;2337:1;;2230:115::o;1460:7651::-;;;;;;;;;;;;;;;;;:::o;2230:115::-;;;;;837:84:53;;2272:18:96;2268:59;;5151:34;1169:76:32;1460:7651:96;;1169:76:32;5067:65:96;1169:76:32;1460:7651:96;;5035:98;1169:76:32;;;:::i;:::-;1460:7651:96;;5067:65;;;1460:7651;5067:65;;;;;;;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5067:65;1460:7651;;;;;;;;;;;;;;;;;;;;;;;;:::i;753:163:46:-;2790:27:96;814:96:46;;;;;753:163;2184:34:34;814:96:46;;;;;753:163;7998:28:50;814:96:46;;;;;963:137:32;1460:7651:96;1039:8:32;1460:7651:96;1030:4:32;1022:25;1018:75;;963:137::o;1018:75::-;1049:31;814:96:46;;;;;8221:496:96;8370:25;8221:496;;;8370:25;;;;;;;;1460:7651;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;8370:25;;1460:7651;;;;8410:8;8406:277;;8221:496;:::o;8406:277::-;1460:7651;;;8438:22;;;8370:25;8480:8;;8434:239;8370:25;8527:132;;1460:7651;;;;;490:144:53;527:101;;;490:144::o;640:121::-;675:80;;;640:121::o;1833:122:51:-;1460:7651:96;;1111:7:51;1667:18;;1888:60;;1833:122;:::o;1888:60::-;1909:22;-1:-1:-1;1084:176:46;;;;-1:-1:-1;1084:176:46;5235:154:56;;5356:26;5235:154;5306:25;;;:::i;:::-;1460:7651:96;;3121:280:111;3217:178;3121:280;3217:178;;;;;;;3121:280;;5356:26:56;1460:7651:96;;5235:154:56:o;1357:223:46:-;3157:28:96;1431:143:46;;;;;;;;;1357:223;3263:28:96;1431:143:46;;;;;;;;;1357:223;3811:20:64;1431:143:46;;;;;;;;;2915:418;3008:319;;2915:418;3008:319;;;;3379:36:96;3008:319:46;;;;;;;;;;;;;5485:1119:50;1460:7651:96;16467:29:50;;:34;5703:91;;;5485:1119;5699:109;;1460:7651:96;16467:29:50;;:34;5822:89;;;5485:1119;5818:107;;1460:7651:96;16467:29:50;;:34;5939:107;;;5485:1119;5935:158;;1460:7651:96;16467:29:50;;:34;6119:129;;;5485:1119;6102:169;;1460:7651:96;;;;;-1:-1:-1;1460:7651:96;;552:8:51;1379:24;6497:19:50;;5485:1119::o;6455:142::-;1325:13;6532:38;:42;;;;:64;;;6455:142;5485:1119;:::o;6532:64::-;552:8:51;1460:7651:96;;;;1379:24:51;5485:1119:50;:::o;6102:169::-;6259:12;;1460:7651:96;6259:12:50;:::o;6119:129::-;-1:-1:-1;1460:7651:96;16467:29:50;;:34;;6119:129;;5939:107;-1:-1:-1;1460:7651:96;16467:29:50;;:34;;5939:107;;5822:89;-1:-1:-1;1460:7651:96;16467:29:50;;:34;;5822:89;;5703:91;-1:-1:-1;1460:7651:96;16467:29:50;;:34;;5703:91;;1009:257:46;1084:176;1009:257;3584:34:96;1084:176:46;;;;;;;;1009:257;1084:176;1009:257;1503:28:34;1084:176:46;;;;;;;;1009:257;1084:176;1009:257;8281:25:64;1084:176:46;;;;;;;;2333:220:51;552:8;1460:7651:96;;;1379:24:51;2467:33;;2510:13;;;:::i;2467:33::-;2492:8;1460:7651:96;2492:8:51;:::o;8767:108:50:-;1460:7651:96;;;8814:10:50;:27;8810:59;;8767:108;;;:::o;8810:59::-;1460:7651:96;16467:29:50;;9085:160;;8767:108;;;:::o;9085:160::-;1460:7651:96;9147:87:50;1460:7651:96;1397:7:50;1460:7651:96;;9161:72:50;;;;;;8814:10;9161:72;;;1460:7651:96;1397:7:50;;;;1460:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1397:7:50;1460:7651:96;1397:7:50;;;1460:7651:96;1397:7:50;9161:72;;;;;;:::i;:::-;9147:87;:::i;:::-;;8767:108::o;4549:434:56:-;;;;1460:7651:96;;1502:93:111;;4665:80:56;;2282:66:64;1502:93:111;1862:10:64;;;1460:7651:96;8182:79:64;8178:168;;1502:93:111;1460:7651:96;;8376:27:64;;;1460:7651:96;;2282:66:64;;8376:27;2282:66;8376:27;8449:43;8463:29;;;:::i;:::-;1460:7651:96;;;;8449:43:64;8511:10;8518:3;8511:10;;8518:3;;2282:66;;;;1460:7651:96;8507:83:64;;2282:66;1460:7651:96;;8660:196:64;;;;;;;1460:7651:96;8660:196:64;;8869;;;8660;8869;;1460:7651:96;8869:196:64;;9078;;;8660;9078;;1460:7651:96;9078:196:64;;9287;;;8660;9287;;1460:7651:96;9287:196:64;;9496;;;8660;9496;;1460:7651:96;9496:196:64;;9705;;;8660;9705;;1460:7651:96;9705:196:64;;9914;;;;8660;9914;;1460:7651:96;9914:196:64;;10123;;;;8660;10123;;1460:7651:96;10123:196:64;;10332;;;;8660;10332;;1460:7651:96;10332:196:64;;10541;;;;8660;10541;;1460:7651:96;10541:196:64;;10750;;;;8660;10750;;1460:7651:96;10750:196:64;;10959;;;;8660;10959;;1460:7651:96;10959:196:64;;11168;;;;;8660;11168;;1460:7651:96;11168:196:64;;11377:165;;;;;;11168:196;;;;;10959;;;;;10750;;;;;10541;;;;;10332;;;;;10123;;;;;9914;;;;;9705;;;;;9496;;;;;9287;;;;;9078;;;;;8869;;;;;8660;;;;;;8869;9078;9287;9496;9705;9914;10123;10332;10541;10750;10959;11168;11377:165;11587:24;2282:66;;;;;11787:62;;1460:7651:96;2282:66:64;;;11787:62;4894:82:56;;:66;;12201:39:64;2282:66;;;1460:7651:96;2282:66:64;1460:7651:96;;;;;;;;12271:17:64;;;;;:91;;;;4894:52:56;4756:48;4894:52;2342:131:111;;2231:248;;4894:52:56;2485:256:111;2578:157;2485:256;2578:157;;;;;;;2485:256;;4894:66:56;3121:280:111;3217:178;3121:280;3217:178;;;;;;;3121:280;;12271:91:64;1502:93:111;12301:26:64;;;:::i;:::-;1460:7651:96;12301:42:64;:61;;;12271:91;;12301:61;;;12271:91;;8507:83;2282:66;;;8580:3;2282:66;1460:7651:96;8507:83:64;;;8178:168;8318:12;;:::i;4665:80:56:-;4701:31;-1:-1:-1;814:96:46;;-1:-1:-1;814:96:46;8767:108:50;;;;1460:7651:96;;;8814:10:50;:27;8810:59;;8767:108;;;;;:::o;8810:59::-;1460:7651:96;16467:29:50;;9491:164;8810:59;9491:164;1460:7651:96;9552:92:50;1460:7651:96;:7:50;:7651:96;;9566:77:50;;;;;;8814:10;9566:77;;;1460:7651:96;:7:50;;;;:7651:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7:50;:7651:96;:7:50;;;:7651:96;;;:7:50;;;:7651:96;:7:50;9566:77;;;;;;:::i;9552:92::-;;9491:164;;;;8810:59;;4989:178:56;;5072:25;;;:::i;:::-;2855:254:111;1460:7651:96;;2855:254:111;;;;;;;;1460:7651:96;;4989:178:56:o;1472:2873:107:-;;;;1460:7651:96;;;1769:24:107;;1809:163;-1:-1:-1;1809:163:107;;;2085:8;1809:163;;;;2085:8;;1460:7651:96;2085:8:107;2081:127;;1765:2574;1472:2873::o;2081:127::-;2163:29;:::i;1765:2574::-;2238:1774;;;;;;;;;;;;;;;;;;-1:-1:-1;2238:1774:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;2238:1774;1460:7651:96;4268:28:107;:::i;4351:276::-;1460:7651:96;;;4439:24:107;;4486:21;;4479:28;:::o;4435:186::-;1460:7651:96;;;4545:65:107;;4604:4;4545:65;;;1460:7651:96;;4545:65:107;;1460:7651:96;;;;;;;;4545:65:107;;;;;;;1460:7651:96;4545:65:107;;;4538:72;;:::o;4545:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;28591:157:56;1460:7651:96;1502:93:111;;28669:30:56;28665:76;;28591:157::o;28665:76::-;28701:27;-1:-1:-1;814:96:46;;-1:-1:-1;814:96:46;6780:1276:50;;;;6901:116;;;-1:-1:-1;6901:116:50;;;;;;;;;;7111:8;7107:102;;7280:504;;;;;;;;;;;;;;;;;;;6901:116;7280:504;;;-1:-1:-1;7280:504:50;;6901:116;1460:7651:96;;7914:18:50;:68;;;;;6780:1276;7910:140;;;;6780:1276::o;7910:140::-;7998:39;:::i;7914:68::-;563:85:55;;;1460:7651:96;;;;;;7936:46:50;;;-1:-1:-1;7914:68:50;;;;7107:102;7171:12;;;1460:7651:96;;;;;;;;;;;;7107:102:50;1460:7651:96;;;;7185:23:50;:::i;1460:7651:96:-;;;;;;;;;;;;;;;;;;;;;3508:1663:46;3741:1424;;;;;;;;;3710:21;3741:1424;;;;;;;2238:1774:107;3741:1424:46;;;;;;;;;;;;;;;;;;;;;;;;;;;4268:28:107;3741:1424:46;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;;;;;3710:21;3741:1424;;;;;;;1460:7651:96;3741:1424:46;;;;;;;;;;;;;;;;;;;;;;1460:7651:96;3741:1424:46;;;;2163:29:107;3741:1424:46;;;;;;;;;;;;;;;3508:1663;;3741:1424;;;;;;;;;;;3710:21;3741:1424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7185:23:50;3741:1424:46;;;;;;;;;;;;;;;653:664:43;742:5;;1460:7651:96;;759:552:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;653:664;:::o;3149:4018:64:-;3297:459;;;;;;;;;;1317:6;3774:35;;3770:78;;6424:727;4356:13;;4383:160;;;;;;;4560:13;3297:459;4560:13;;4556:83;;3149:4018;4667:3;4657:13;;4653:83;;3149:4018;4764:3;4754:13;;4750:83;;3149:4018;4861:4;4851:14;;4847:84;;3149:4018;4959:4;4949:14;;4945:84;;3149:4018;5057:4;5047:14;;5043:84;;3149:4018;4383:160;5145:14;;5141:84;;3149:4018;5253:5;5243:15;;5239:85;;3149:4018;5352:5;5342:15;;5338:85;;3149:4018;5451:5;5441:15;;5437:85;;3149:4018;5550:5;5540:15;;5536:85;;3149:4018;5649:6;5639:16;;5635:86;;3149:4018;5749:6;5739:16;;5735:86;;3149:4018;5849:6;5839:16;;5835:86;;3149:4018;5949:6;5939:16;;5935:86;;3149:4018;6049:7;6039:17;;6035:86;;3149:4018;6149:7;6139:17;;6135:85;;3149:4018;6248:7;6238:17;;6234:83;;3149:4018;6345:7;6335:17;6331:78;;3149:4018;-1:-1:-1;;6424:727:64;;3149:4018;6424:727;4959:4;6424:727;3149:4018;:::o;6424:727::-;;;;;6331:78;6376:25;1317:6;;;1460:7651:96;;;6331:78:64;;6234:83;6279:30;1317:6;;;1460:7651:96;;;6234:83:64;;6135:85;1317:6;6180:32;1317:6;1460:7651:96;;6135:85:64;;;6035:86;1317:6;6080:33;1317:6;1460:7651:96;;6035:86:64;;;5935;1317:6;5979:34;1317:6;1460:7651:96;;5935:86:64;;;5835;1317:6;5879:34;1317:6;1460:7651:96;;5835:86:64;;;5735;1317:6;5779:34;1317:6;1460:7651:96;;5735:86:64;;;5635;1317:6;5679:34;1317:6;1460:7651:96;;5635:86:64;;;5536:85;1317:6;5579:34;1317:6;1460:7651:96;;5536:85:64;;;5437;1317:6;5480:34;1317:6;1460:7651:96;;5437:85:64;;;5338;1317:6;5381:34;1317:6;1460:7651:96;;5338:85:64;;;5239;1317:6;5282:34;1317:6;1460:7651:96;;5239:85:64;;;5141:84;1317:6;5183:34;1317:6;1460:7651:96;;5141:84:64;;;5043;1317:6;5085:34;1317:6;1460:7651:96;;5043:84:64;;;4945;1317:6;4987:34;1317:6;1460:7651:96;;4945:84:64;;;4847;1317:6;4889:34;1317:6;1460:7651:96;;4847:84:64;;;4750:83;1317:6;4791:34;1317:6;1460:7651:96;;4750:83:64;;;4653;1317:6;4694:34;1317:6;1460:7651:96;;4653:83:64;;;4556;1317:6;4597:34;1317:6;1460:7651:96;;4556:83:64;;;3770:78;3843:4;;:::i","linkReferences":{},"immutableReferences":{"41241":[{"start":9461,"length":32}],"58136":[{"start":1380,"length":32}]}},"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160)":"6276cbbe","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","supportsInterface(bytes4)":"01ffc9a7","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","transferOwnership(address)":"f2fde38b","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegateManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyUnlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency1\",\"type\":\"address\"}],\"name\":\"CurrenciesOutOfOrderOrEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManagerLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustClearExactPositiveDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonzeroNativeValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeCurrencySynced\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedDynamicLPFeeUpdate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Donate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ModifyLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nSlots\",\"type\":\"uint256\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"initialize\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"callerDelta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"protocolFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"uint24\",\"name\":\"newProtocolFee\",\"type\":\"uint24\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"settleFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"swapDelta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"take\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"uint24\",\"name\":\"newDynamicLPFee\",\"type\":\"uint24\"}],\"name\":\"updateDynamicLPFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Donate(bytes32,address,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount donated in currency0\",\"amount1\":\"The amount donated in currency1\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was donated to\",\"sender\":\"The address that initiated the donate call\"}},\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"params\":{\"currency0\":\"The first currency of the pool by address sort order\",\"currency1\":\"The second currency of the pool by address sort order\",\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"hooks\":\"The hooks contract address for the pool, or address(0) if none\",\"id\":\"The abi encoded hash of the pool key struct for the new pool\",\"sqrtPriceX96\":\"The price of the pool on initialization\",\"tick\":\"The initial tick of the pool corresponding to the initialized price\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\"}},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"params\":{\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidityDelta\":\"The amount of liquidity that was added or removed\",\"salt\":\"The extra data to make positions unique\",\"sender\":\"The address that modified the pool\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"params\":{\"amount0\":\"The delta of the currency0 balance of the pool\",\"amount1\":\"The delta of the currency1 balance of the pool\",\"fee\":\"The swap fee in hundredths of a bip\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidity\":\"The liquidity of the pool after the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of the price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"burn(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to burn\",\"from\":\"The address to burn the tokens from\",\"id\":\"The currency address to burn from ERC6909s, as a uint256\"}},\"clear(address,uint256)\":{\"details\":\"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.\"},\"collectProtocolFees(address,address,uint256)\":{\"details\":\"This will revert if the contract is unlocked\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw\",\"recipient\":\"The address to receive the protocol fees\"},\"returns\":{\"amountCollected\":\"The amount of currency successfully withdrawn\"}},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"details\":\"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.\",\"params\":{\"amount0\":\"The amount of currency0 to donate\",\"amount1\":\"The amount of currency1 to donate\",\"hookData\":\"The data to pass through to the donate hooks\",\"key\":\"The key of the pool to donate to\"},\"returns\":{\"delta\":\"BalanceDelta The delta of the caller after the donate\"}},\"extsload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to sload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"extsload(bytes32,uint256)\":{\"params\":{\"nSlots\":\"Number of slots to load into return value\",\"startSlot\":\"Key of slot to start sloading from\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"extsload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to SLOAD from.\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"exttload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to tload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"exttload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to tload\"},\"returns\":{\"_0\":\"List of loaded values\"}},\"initialize((address,address,uint24,int24,address),uint160)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"params\":{\"key\":\"The pool key for the pool to initialize\",\"sqrtPriceX96\":\"The initial square root price\"},\"returns\":{\"tick\":\"The initial tick of the pool\"}},\"mint(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to mint\",\"id\":\"The currency address to mint to ERC6909s, as a uint256\",\"to\":\"The address to mint the tokens to\"}},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"details\":\"Poke by calling with a zero liquidityDeltaNote that feesAccrued can be artificially inflated by a malicious actor and integrators should be careful using the value For pools with a single liquidity position, actors can donate to themselves to inflate feeGrowthGlobal (and consequently feesAccrued) atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme\",\"params\":{\"hookData\":\"The data to pass through to the add/removeLiquidity hooks\",\"key\":\"The pool to modify liquidity in\",\"params\":\"The parameters for modifying the liquidity\"},\"returns\":{\"callerDelta\":\"The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable\",\"feesAccrued\":\"The balance delta of the fees generated in the liquidity range. Returned for informational purposes\"}},\"setOperator(address,bool)\":{\"params\":{\"approved\":\"The approval status.\",\"operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to set a protocol fee for\",\"newProtocolFee\":\"The fee to set\"}},\"setProtocolFeeController(address)\":{\"params\":{\"controller\":\"The new protocol fee controller\"}},\"settle()\":{\"returns\":{\"paid\":\"The amount of currency settled\"}},\"settleFor(address)\":{\"params\":{\"recipient\":\"The address to credit for the payment\"},\"returns\":{\"paid\":\"The amount of currency settled\"}},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"details\":\"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.\",\"params\":{\"hookData\":\"The data to pass through to the swap hooks\",\"key\":\"The pool to swap in\",\"params\":\"The parameters for swapping\"},\"returns\":{\"swapDelta\":\"The balance delta of the address swapping\"}},\"sync(address)\":{\"details\":\"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency\"},\"take(address,address,uint256)\":{\"details\":\"Will revert if the requested amount is not available, consider using `mint` insteadCan also be used as a mechanism for free flash loans\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw from the pool manager\",\"to\":\"The address to withdraw to\"}},\"transfer(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"transferFrom(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\",\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"unlock(bytes)\":{\"details\":\"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`\",\"params\":{\"data\":\"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`\"},\"returns\":{\"result\":\"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`\"}},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"params\":{\"key\":\"The key of the pool to update dynamic LP fees for\",\"newDynamicLPFee\":\"The new dynamic pool LP fee\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyUnlocked()\":[{\"notice\":\"Thrown when unlock is called, but the contract is already unlocked\"}],\"CurrenciesOutOfOrderOrEqual(address,address)\":[{\"notice\":\"PoolKey must have currencies where address(currency0) < address(currency1)\"}],\"CurrencyNotSettled()\":[{\"notice\":\"Thrown when a currency is not netted out after the contract is unlocked\"}],\"InvalidCaller()\":[{\"notice\":\"Thrown when collectProtocolFees or setProtocolFee is not called by the controller.\"}],\"ManagerLocked()\":[{\"notice\":\"Thrown when a function is called that requires the contract to be unlocked, but it is not\"}],\"MustClearExactPositiveDelta()\":[{\"notice\":\"Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta.\"}],\"NonzeroNativeValue()\":[{\"notice\":\"Thrown when native currency is passed to a non native settlement\"}],\"PoolNotInitialized()\":[{\"notice\":\"Thrown when trying to interact with a non-initialized pool\"}],\"ProtocolFeeCurrencySynced()\":[{\"notice\":\"Thrown when collectProtocolFees is attempted on a token that is synced.\"}],\"ProtocolFeeTooLarge(uint24)\":[{\"notice\":\"Thrown when protocol fee is set too high\"}],\"SwapAmountCannotBeZero()\":[{\"notice\":\"Thrown when trying to swap amount of 0\"}],\"TickSpacingTooLarge(int24)\":[{\"notice\":\"Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow\"}],\"TickSpacingTooSmall(int24)\":[{\"notice\":\"Pools must have a positive non-zero tickSpacing passed to #initialize\"}],\"UnauthorizedDynamicLPFeeUpdate()\":[{\"notice\":\"Thrown when a call to updateDynamicLPFee is made by an address that is not the hook, or on a pool that does not have a dynamic swap fee.\"}]},\"events\":{\"Donate(bytes32,address,uint256,uint256)\":{\"notice\":\"Emitted for donations\"},\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"notice\":\"Emitted when a new pool is initialized\"},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"notice\":\"Emitted when a liquidity position is modified\"},\"ProtocolFeeControllerUpdated(address)\":{\"notice\":\"Emitted when the protocol fee controller address is updated in setProtocolFeeController.\"},\"ProtocolFeeUpdated(bytes32,uint24)\":{\"notice\":\"Emitted when the protocol fee is updated for a pool.\"},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"notice\":\"Emitted for swaps between currency0 and currency1\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,uint256)\":{\"notice\":\"Spender allowance of an id.\"},\"approve(address,uint256,uint256)\":{\"notice\":\"Approves an amount of an id to a spender.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Owner balance of an id.\"},\"burn(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value from ERC6909 balance\"},\"clear(address,uint256)\":{\"notice\":\"WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer.\"},\"collectProtocolFees(address,address,uint256)\":{\"notice\":\"Collects the protocol fees for a given recipient and currency, returning the amount collected\"},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"Donate the given currency amounts to the in-range liquidity providers of a pool\"},\"extsload(bytes32)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32,uint256)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse pool state\"},\"exttload(bytes32)\":{\"notice\":\"Called by external contracts to access transient storage of the contract\"},\"exttload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse transient pool state\"},\"initialize((address,address,uint24,int24,address),uint160)\":{\"notice\":\"Initialize the state for a given pool ID\"},\"isOperator(address,address)\":{\"notice\":\"Checks if a spender is approved by an owner as an operator\"},\"mint(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value into ERC6909 balance\"},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"Modify the liquidity for the given pool\"},\"protocolFeeController()\":{\"notice\":\"Returns the current protocol fee controller address\"},\"protocolFeesAccrued(address)\":{\"notice\":\"Given a currency address, returns the protocol fees accrued in that currency\"},\"setOperator(address,bool)\":{\"notice\":\"Sets or removes an operator for the caller.\"},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Sets the protocol fee for the given pool\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets the protocol fee controller\"},\"settle()\":{\"notice\":\"Called by the user to pay what is owed\"},\"settleFor(address)\":{\"notice\":\"Called by the user to pay on behalf of another address\"},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"Swap against the given pool\"},\"sync(address)\":{\"notice\":\"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller.\"},\"take(address,address,uint256)\":{\"notice\":\"Called by the user to net out some value owed to the user\"},\"transfer(address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from the caller to a receiver.\"},\"transferFrom(address,address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from a sender to a receiver.\"},\"unlock(bytes)\":{\"notice\":\"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.\"},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Updates the pools lp fees for the a pool that has enabled dynamic lp fees.\"}},\"notice\":\"A proxy pool manager that delegates calls to the real/delegate pool manager\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/ProxyPoolManager.sol\":\"ProxyPoolManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"src/test/ProxyPoolManager.sol\":{\"keccak256\":\"0xdbd19980c06c27e0b9204e7d9072855d426f8b9e07a538366c06ddca9a9fe87c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d1113b3115cd65f946dc1d2dca89ffcc32b03f6d3718ad9cfb38615d2cc47396\",\"dweb:/ipfs/QmTM5B5hV7SCaWrvZo3uURkrMKa54aNffjLKudbyGht4Qc\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegateManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyUnlocked"},{"inputs":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"}],"type":"error","name":"CurrenciesOutOfOrderOrEqual"},{"inputs":[],"type":"error","name":"CurrencyNotSettled"},{"inputs":[],"type":"error","name":"DelegateCallNotAllowed"},{"inputs":[],"type":"error","name":"InvalidCaller"},{"inputs":[],"type":"error","name":"ManagerLocked"},{"inputs":[],"type":"error","name":"MustClearExactPositiveDelta"},{"inputs":[],"type":"error","name":"NonzeroNativeValue"},{"inputs":[],"type":"error","name":"PoolNotInitialized"},{"inputs":[],"type":"error","name":"ProtocolFeeCurrencySynced"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"type":"error","name":"ProtocolFeeTooLarge"},{"inputs":[],"type":"error","name":"SwapAmountCannotBeZero"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooLarge"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooSmall"},{"inputs":[],"type":"error","name":"UnauthorizedDynamicLPFeeUpdate"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Donate","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"Currency","name":"currency0","type":"address","indexed":true},{"internalType":"Currency","name":"currency1","type":"address","indexed":true},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false},{"internalType":"int24","name":"tickSpacing","type":"int24","indexed":false},{"internalType":"contract IHooks","name":"hooks","type":"address","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":false},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":false},{"internalType":"int256","name":"liquidityDelta","type":"int256","indexed":false},{"internalType":"bytes32","name":"salt","type":"bytes32","indexed":false}],"type":"event","name":"ModifyLiquidity","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"protocolFeeController","type":"address","indexed":true}],"type":"event","name":"ProtocolFeeControllerUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"uint24","name":"protocolFee","type":"uint24","indexed":false}],"type":"event","name":"ProtocolFeeUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"clear"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"uint256","name":"amountCollected","type":"uint256"}]},{"inputs":[{"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":"donate","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"startSlot","type":"bytes32"},{"internalType":"uint256","name":"nSlots","type":"uint256"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"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":"initialize","outputs":[{"internalType":"int24","name":"tick","type":"int24"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"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":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"callerDelta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeController","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"view","type":"function","name":"protocolFeesAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"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":"uint24","name":"newProtocolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFee"},{"inputs":[{"internalType":"address","name":"controller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[],"stateMutability":"payable","type":"function","name":"settle","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"settleFor","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"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":"swap","outputs":[{"internalType":"BalanceDelta","name":"swapDelta","type":"int256"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"take"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"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":"uint24","name":"newDynamicLPFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"updateDynamicLPFee"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","spender":"The address of the spender."},"returns":{"_0":"bool True, always"}},"burn(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to burn","from":"The address to burn the tokens from","id":"The currency address to burn from ERC6909s, as a uint256"}},"clear(address,uint256)":{"details":"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared."},"collectProtocolFees(address,address,uint256)":{"details":"This will revert if the contract is unlocked","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw","recipient":"The address to receive the protocol fees"},"returns":{"amountCollected":"The amount of currency successfully withdrawn"}},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"details":"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.","params":{"amount0":"The amount of currency0 to donate","amount1":"The amount of currency1 to donate","hookData":"The data to pass through to the donate hooks","key":"The key of the pool to donate to"},"returns":{"delta":"BalanceDelta The delta of the caller after the donate"}},"extsload(bytes32)":{"params":{"slot":"Key of slot to sload"},"returns":{"_0":"The value of the slot as bytes32"}},"extsload(bytes32,uint256)":{"params":{"nSlots":"Number of slots to load into return value","startSlot":"Key of slot to start sloading from"},"returns":{"_0":"List of loaded values."}},"extsload(bytes32[])":{"params":{"slots":"List of slots to SLOAD from."},"returns":{"_0":"List of loaded values."}},"exttload(bytes32)":{"params":{"slot":"Key of slot to tload"},"returns":{"_0":"The value of the slot as bytes32"}},"exttload(bytes32[])":{"params":{"slots":"List of slots to tload"},"returns":{"_0":"List of loaded values"}},"initialize((address,address,uint24,int24,address),uint160)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","params":{"key":"The pool key for the pool to initialize","sqrtPriceX96":"The initial square root price"},"returns":{"tick":"The initial tick of the pool"}},"mint(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to mint","id":"The currency address to mint to ERC6909s, as a uint256","to":"The address to mint the tokens to"}},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"details":"Poke by calling with a zero liquidityDeltaNote that feesAccrued can be artificially inflated by a malicious actor and integrators should be careful using the value For pools with a single liquidity position, actors can donate to themselves to inflate feeGrowthGlobal (and consequently feesAccrued) atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme","params":{"hookData":"The data to pass through to the add/removeLiquidity hooks","key":"The pool to modify liquidity in","params":"The parameters for modifying the liquidity"},"returns":{"callerDelta":"The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable","feesAccrued":"The balance delta of the fees generated in the liquidity range. Returned for informational purposes"}},"setOperator(address,bool)":{"params":{"approved":"The approval status.","operator":"The address of the operator."},"returns":{"_0":"bool True, always"}},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to set a protocol fee for","newProtocolFee":"The fee to set"}},"setProtocolFeeController(address)":{"params":{"controller":"The new protocol fee controller"}},"settle()":{"returns":{"paid":"The amount of currency settled"}},"settleFor(address)":{"params":{"recipient":"The address to credit for the payment"},"returns":{"paid":"The amount of currency settled"}},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"details":"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.","params":{"hookData":"The data to pass through to the swap hooks","key":"The pool to swap in","params":"The parameters for swapping"},"returns":{"swapDelta":"The balance delta of the address swapping"}},"sync(address)":{"details":"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency"},"take(address,address,uint256)":{"details":"Will revert if the requested amount is not available, consider using `mint` insteadCan also be used as a mechanism for free flash loans","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw from the pool manager","to":"The address to withdraw to"}},"transfer(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver."},"returns":{"_0":"bool True, always, unless the function reverts"}},"transferFrom(address,address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver.","sender":"The address of the sender."},"returns":{"_0":"bool True, always, unless the function reverts"}},"unlock(bytes)":{"details":"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`","params":{"data":"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`"},"returns":{"result":"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`"}},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","params":{"key":"The key of the pool to update dynamic LP fees for","newDynamicLPFee":"The new dynamic pool LP fee"}}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address,uint256)":{"notice":"Spender allowance of an id."},"approve(address,uint256,uint256)":{"notice":"Approves an amount of an id to a spender."},"balanceOf(address,uint256)":{"notice":"Owner balance of an id."},"burn(address,uint256,uint256)":{"notice":"Called by the user to move value from ERC6909 balance"},"clear(address,uint256)":{"notice":"WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer."},"collectProtocolFees(address,address,uint256)":{"notice":"Collects the protocol fees for a given recipient and currency, returning the amount collected"},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"Donate the given currency amounts to the in-range liquidity providers of a pool"},"extsload(bytes32)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32,uint256)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32[])":{"notice":"Called by external contracts to access sparse pool state"},"exttload(bytes32)":{"notice":"Called by external contracts to access transient storage of the contract"},"exttload(bytes32[])":{"notice":"Called by external contracts to access sparse transient pool state"},"initialize((address,address,uint24,int24,address),uint160)":{"notice":"Initialize the state for a given pool ID"},"isOperator(address,address)":{"notice":"Checks if a spender is approved by an owner as an operator"},"mint(address,uint256,uint256)":{"notice":"Called by the user to move value into ERC6909 balance"},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"Modify the liquidity for the given pool"},"protocolFeeController()":{"notice":"Returns the current protocol fee controller address"},"protocolFeesAccrued(address)":{"notice":"Given a currency address, returns the protocol fees accrued in that currency"},"setOperator(address,bool)":{"notice":"Sets or removes an operator for the caller."},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"notice":"Sets the protocol fee for the given pool"},"setProtocolFeeController(address)":{"notice":"Sets the protocol fee controller"},"settle()":{"notice":"Called by the user to pay what is owed"},"settleFor(address)":{"notice":"Called by the user to pay on behalf of another address"},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"notice":"Swap against the given pool"},"sync(address)":{"notice":"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller."},"take(address,address,uint256)":{"notice":"Called by the user to net out some value owed to the user"},"transfer(address,uint256,uint256)":{"notice":"Transfers an amount of an id from the caller to a receiver."},"transferFrom(address,address,uint256,uint256)":{"notice":"Transfers an amount of an id from a sender to a receiver."},"unlock(bytes)":{"notice":"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract."},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"notice":"Updates the pools lp fees for the a pool that has enabled dynamic lp fees."}},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/test/ProxyPoolManager.sol":"ProxyPoolManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"src/test/ProxyPoolManager.sol":{"keccak256":"0xdbd19980c06c27e0b9204e7d9072855d426f8b9e07a538366c06ddca9a9fe87c","urls":["bzz-raw://d1113b3115cd65f946dc1d2dca89ffcc32b03f6d3718ad9cfb38615d2cc47396","dweb:/ipfs/QmTM5B5hV7SCaWrvZo3uURkrMKa54aNffjLKudbyGht4Qc"],"license":"BUSL-1.1"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"}},"version":1},"id":96}