{
  "contractName": "MoonwalkerPool",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount0",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount1",
          "type": "uint128"
        }
      ],
      "name": "Collect",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount0",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount1",
          "type": "uint128"
        }
      ],
      "name": "CollectProtocol",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "paid0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "paid1",
          "type": "uint256"
        }
      ],
      "name": "Flash",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "observationCardinalityNextOld",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "observationCardinalityNextNew",
          "type": "uint16"
        }
      ],
      "name": "IncreaseObservationCardinalityNext",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        },
        {
          "indexed": false,
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        }
      ],
      "name": "Initialize",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "indexed": true,
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "amount",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "feeProtocol0Old",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "feeProtocol1Old",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "feeProtocol0New",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "feeProtocol1New",
          "type": "uint8"
        }
      ],
      "name": "SetFeeProtocol",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "amount0",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "amount1",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeGrowthGlobal0X128",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeGrowthGlobal1X128",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidity",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLiquidityPerTick",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "observations",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "blockTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "int56",
          "name": "tickCumulative",
          "type": "int56"
        },
        {
          "internalType": "uint160",
          "name": "secondsPerLiquidityCumulativeX128",
          "type": "uint160"
        },
        {
          "internalType": "bool",
          "name": "initialized",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "positions",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "feeGrowthInside0LastX128",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "feeGrowthInside1LastX128",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "tokensOwed0",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "tokensOwed1",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolFees",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "token0",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "token1",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "slot0",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        },
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "uint16",
          "name": "observationIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "observationCardinality",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "observationCardinalityNext",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "feeProtocol",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "unlocked",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int16",
          "name": "",
          "type": "int16"
        }
      ],
      "name": "tickBitmap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tickSpacing",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "name": "ticks",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "liquidityGross",
          "type": "uint128"
        },
        {
          "internalType": "int128",
          "name": "liquidityNet",
          "type": "int128"
        },
        {
          "internalType": "uint256",
          "name": "feeGrowthOutside0X128",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "feeGrowthOutside1X128",
          "type": "uint256"
        },
        {
          "internalType": "int56",
          "name": "tickCumulativeOutside",
          "type": "int56"
        },
        {
          "internalType": "uint160",
          "name": "secondsPerLiquidityOutsideX128",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "secondsOutside",
          "type": "uint32"
        },
        {
          "internalType": "bool",
          "name": "initialized",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token0",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        }
      ],
      "name": "snapshotCumulativesInside",
      "outputs": [
        {
          "internalType": "int56",
          "name": "tickCumulativeInside",
          "type": "int56"
        },
        {
          "internalType": "uint160",
          "name": "secondsPerLiquidityInsideX128",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "secondsInside",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[]",
          "name": "secondsAgos",
          "type": "uint32[]"
        }
      ],
      "name": "observe",
      "outputs": [
        {
          "internalType": "int56[]",
          "name": "tickCumulatives",
          "type": "int56[]"
        },
        {
          "internalType": "uint160[]",
          "name": "secondsPerLiquidityCumulativeX128s",
          "type": "uint160[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "observationCardinalityNext",
          "type": "uint16"
        }
      ],
      "name": "increaseObservationCardinalityNext",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "internalType": "uint128",
          "name": "amount",
          "type": "uint128"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "internalType": "uint128",
          "name": "amount0Requested",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "amount1Requested",
          "type": "uint128"
        }
      ],
      "name": "collect",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "amount0",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "amount1",
          "type": "uint128"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        },
        {
          "internalType": "uint128",
          "name": "amount",
          "type": "uint128"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "zeroForOne",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "amountSpecified",
          "type": "int256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceLimitX96",
          "type": "uint160"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "int256",
          "name": "amount0",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1",
          "type": "int256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "flash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "feeProtocol0",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "feeProtocol1",
          "type": "uint8"
        }
      ],
      "name": "setFeeProtocol",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint128",
          "name": "amount0Requested",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "amount1Requested",
          "type": "uint128"
        }
      ],
      "name": "collectProtocol",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "amount0",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "amount1",
          "type": "uint128"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"noDelegateCall is applied indirectly via _modifyPosition\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IMoonwalkerFlashCallback#moonwalkerFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"not locked because it initializes unlocked\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"noDelegateCall is applied indirectly via _modifyPosition\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IMoonwalkerSwapCallback#moonwalkerSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"stateVariables\":{\"factory\":{\"return\":\"The contract address\"},\"fee\":{\"return\":\"The fee\"},\"feeGrowthGlobal0X128\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128\":{\"details\":\"This value can overflow the uint256\"},\"liquidity\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"maxLiquidityPerTick\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"return\":\"The max amount of liquidity per tick\"},\"observations\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"return\":\"blockTimestamp The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"},\"positions\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"return\":\"_liquidity The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"},\"protocolFees\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"slot0\":{\"return\":\"sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"},\"tickSpacing\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"return\":\"The tick spacing\"},\"ticks\":{\"params\":{\"tick\":\"The tick to look up\"},\"return\":\"liquidityGross the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"},\"token0\":{\"return\":\"The token contract address\"},\"token1\":{\"return\":\"The token contract address\"}},\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IMoonwalkerFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/MoonwalkerPool.sol\":\"MoonwalkerPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/MoonwalkerPool.sol\":{\"keccak256\":\"0xd435702358453955f8e247b5f61148b90024ed41a5057fb5ad29e858a229a227\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://599e092d75252a9362c90f74d638338d6e2fc44d1ad6767276b05624a613156f\",\"dweb:/ipfs/QmTvBiPmgK5HSRyTeCDuWm6KZoa3PVZQEeLzZ3PmV6tCWZ\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/NoDelegateCall.sol\":{\"keccak256\":\"0x386511254c4d6d2633d7ffa3041630379d50e4a1ec492f9ca1b757947290b0e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd48f9bacc3be4e22d68a8b9ff22c009579ac2469c6a7a936f7f9771dcd581f5\",\"dweb:/ipfs/QmTMkABgncwV73CfemiKv9vbmdDJSL75soQr2KjBEwsJkY\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IERC20Minimal.sol\":{\"keccak256\":\"0x7ab95ce2d6a483f0255ecee7068989051c3ed85fce0c44fab13889e7a71334e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62f6b6dc9ba1843687ad346a10cafc8d86b95d1f498032054f11baef3d6c22e\",\"dweb:/ipfs/QmdiDLfAZLr1pkE8ZVCnSgBocAEejPwstaJJvPN4LZYEcf\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerFactory.sol\":{\"keccak256\":\"0xef710eff542f772b16ac4729719c373436c2eb10206764bfb6a41dd33096f7df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea2310bf2f9bfe77324a70ef2faf57f4c0bbf011f15d011b87360d5e035cc41a\",\"dweb:/ipfs/QmdK8PHBsB73CZMFZC2pWKeHire9XZhc638S2xVH9WFx4S\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPool.sol\":{\"keccak256\":\"0xf75566267b21d70d099bcc5e810068457859fd9622df735d710a231685926249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://562145c7d01947f5e859447b991bc0b5a76dea15361962aae150ebd303df7252\",\"dweb:/ipfs/QmYvZTnCekrYL1oBWwoyc2u9jBPRcmcK1iqaANgzgxyZwf\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPoolDeployer.sol\":{\"keccak256\":\"0xdffb36773f8231a4b5816a13f14983b8f7bc2cac803d682bf5b2e9b73cf3a756\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://225881d83166c91b3bb64ea6ee88f0ef74cdeaddf6c28b3552022b43b69bc33b\",\"dweb:/ipfs/QmbNq5c7Apvpk58objNvBLKHiML7S8nLyNaB2uUK3nNLL4\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerFlashCallback.sol\":{\"keccak256\":\"0x456376424212df363adc087b56dedac6c014f739adb86640478d1a93ca59f3db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0abf23d373a3983679e9d8c396a59a9c0837ec26c4e94efbfaec9cae4a581a73\",\"dweb:/ipfs/QmZMpv8X5daH19PrTwYQqcpTr51u5zDE2rBqLLFeCuAoz9\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerMintCallback.sol\":{\"keccak256\":\"0xfd57ef3ddedb21e814dc6a2e7415c672e4ecd90428f0e33bc70b58e83d07b996\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://14579a25f1f2f26521ce7a79dd936e7afe766a8e617a953917986cc079d7d959\",\"dweb:/ipfs/Qmc4Qv1Sqqq6WuEV8b4iWy95GhtE8B3KwtvKTPFsPfhGpQ\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerSwapCallback.sol\":{\"keccak256\":\"0x0709f6eafdc1a998d714c4719e292df3747b0f298a95b994b82e7e0dfc8b70b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2c404b5a8aaf8aabeb87c1228d827e6e31a007cedbf0fe1527bf56f43a43f78\",\"dweb:/ipfs/QmT7fBphTzRgaP4bfL7qtK1kzEbNM5zPhXQaWat7KcHwJN\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolActions.sol\":{\"keccak256\":\"0xbe6848ebe6bc45a3b3dc9e4e471710f990bdf5984ad27aa735ba111ec5251000\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b85fc420f2279fabcc084d0cede0f16a27f5d79719d7aaf1d16c17f106b09ce9\",\"dweb:/ipfs/QmXRbXbZXmfiygmUenvn5osXNqSCogqWq1T16M2GGWfGsU\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolDerivedState.sol\":{\"keccak256\":\"0xdc30625cd50851cca3ce8898c1368c47d12749078132e28802c28213723767fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcf5c236dc728b42471b31cede6a34e49f3a2e5af813a62325d586dc3ed4da83\",\"dweb:/ipfs/Qmd2yDp6v1c7jgzYq7VSjrrDjUNfXs4ms4cKCiCyEQqpyS\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolEvents.sol\":{\"keccak256\":\"0x427dac308f06d66b382235330a372910f9a78dc4f2f61ea3bba4020aeb13aa60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4141da347669273cd5fd7c7908e077ff87f4ef91aa3000536a5e999a9b8bf89d\",\"dweb:/ipfs/QmQ2ViDCBykc3WG5so61vcKdWk2v1wPHUEAPfVc8HziYTL\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolImmutables.sol\":{\"keccak256\":\"0xd0f2dfc66cc3400c6433e0adf4cd40117798f5cdb6963f79a8ff593375773ce2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b03f976151a3a375eadf6f60dd03187bf73f5cd3786ba6b74bcb3e08d6e5c823\",\"dweb:/ipfs/QmYwbt38mnGnB9ovtd9J3Ea8He8BZhrh4ybJ6cCQehZGJj\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolOwnerActions.sol\":{\"keccak256\":\"0x4e0aff2d20141240010056058a6e85faff9357390e1459a717b6bad0a5889ebb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://744646728b66bad9ac7fc5b4074e444ce02503738ae0bd465061d902e4b7e278\",\"dweb:/ipfs/Qmanknkx1G9c7by4b95AQC53FkbMiNBeHnLzES9o5nidN5\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/pool/IMoonwalkerPoolState.sol\":{\"keccak256\":\"0xe1d5e6e9fa35b108ad1b5a972a3e594be19265b14a9b77c61e92df577ae5cc76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07653aacb6a2fd1b4c1a583a19786840a4cb1e089de9cda1071e8c3ae816a5fb\",\"dweb:/ipfs/QmafQirBZzrGrykyHz6R9q9qaiH6nHkmteC8NTFLrs8nDx\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xfdb9011d56f4fc6dbf7dfa9bd191d13c405dc1ef5f295e222d402fedd7b78b4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://635d12ff3353f4996357c4c8798051c49755de9a9431c8068fdd45364c8359f4\",\"dweb:/ipfs/QmfTTffPWDnN1aBeNXgcdozJeBxa9Q6CWJJ2bZh7ZoymKz\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xb466ea5c68592e0aab06e0ffa0937b047a2ec0916c2a181dee91f439e06c36d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90e2d3770039b4430765a328d1abc6d035ad5a6e71906ab8f120220f3a9a9899\",\"dweb:/ipfs/QmTJFjBkBJGL98BjRnyH48yDZC94LU42SuuEPkd5qhgTnW\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0xe511530871deaef86692cea9adb6076d26d7b47fd4815ce51af52af981026057\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5a6ae776be3e7dcbd23d49ffbc9d792fed0ddf4b111ebb64b9bb2133ec263e\",\"dweb:/ipfs/QmbAUtWqvipzEARQpFpkzYKBELy3qeW5WXnZxHFU84sxG7\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x2fcb84bece328675849d09dee9439901fd14c852efa2cb84a7dd1ada04a90a1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce303eb639ca62f247a8a49a65f15b25b931fbd64b176c2180a6ea790f99bb11\",\"dweb:/ipfs/QmXehfxvPATibRJ2JWWBnLbDyA7hMk5jWCxidpJfDKGQVD\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xf2583083971cf8a4274e14515aabbf9f4855193e34fe2addb0ca7b1589519b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbf0ada2bba8827d459101a2359e4682be749b9ddd0a3c44f26119c9a0898e82\",\"dweb:/ipfs/QmPmKotXLza9j7sjNaXSYY9XbyZhkkQ3nMeWE9tiHKeouC\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Oracle.sol\":{\"keccak256\":\"0x727f859fedfcb0402e648407042c022e3fa6568cb137ead98606166f10311772\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5500452fc47f728c5aff23fdecd19ce1083dc7562d7cc241a7e3b6740ded8c2\",\"dweb:/ipfs/QmXPCRHEn68oEM8uMMiWYScGtaUwfkN2DuajiAyzTgHnaF\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Position.sol\":{\"keccak256\":\"0x7fb1a35fcc8b2104f1899d98cd1ce49b5e3af1bdad9da28a5bcda1d4081465e9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://28f43918f6528913abe8586ea4607281b97cdce35f869ae86369487c6ee6eb6c\",\"dweb:/ipfs/QmTgTRMZ5FQT2MCkgUmuhGbt39uyoiVwgXWNJbzoZqiC4f\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x4a12ab60fdb663b341bb3a2f5c6631ba40b7b6fa9d131c9540b60dbb4196a27e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d55e89b639f5ea027798cf3f246f38209308e812b8e568d19aa487bcdc8008a0\",\"dweb:/ipfs/QmfRWZGxKK21EgQea2PLxgJ6aypEbQjQSotHiruXGmKVm6\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x4f69701d331d364b69a1cda77cd7b983a0079d36ae0e06b0bb1d64ae56c3705e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f9ed4f172da650484c97d31cce084e905e69c3f3b072141cb15363f4ed0cd03c\",\"dweb:/ipfs/QmPNDM667PxzbbR8YDbtibFaPMGrcbK71GKpFPkGgDEYvb\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SwapMath.sol\":{\"keccak256\":\"0xcd310be830646d0d55bef86683847577f742704d227471ad7b4cab3df9c47cf7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e6029f7cbb62563f488ee9c4510fee69b5408b64119065d912c1bd682baeef84\",\"dweb:/ipfs/Qmed5zZvcEbqmDmkyGV2huNzrK3mk8KrF9UQohKWLTcc3n\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol\":{\"keccak256\":\"0xdabed554c4b1fea880edd6cf571840824de530ce51d6c9703cad19221590af5a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://160fc25b4e616c2b51f50a49289c43f269f049d7834c48eafe3356048d9f7824\",\"dweb:/ipfs/QmNbtt4nCxonZ7qfzTuoain4Wo3KiSBmuczP6PexcFnKj6\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickBitmap.sol\":{\"keccak256\":\"0x2035bacd76333baa4ef2bbd6423561638e1b7e97cb19be5b4d61feeea3340364\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://55da2e8d44c094b9aa1a40577f9ff32605516ae45ad54e799ec9d570d007a206\",\"dweb:/ipfs/QmakgjThKgfBTaj6Vvf54oKkxeHqgxKFmyiVbcjstsGDBF\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x1f864a2bf61ba05f3173eaf2e3f94c5e1da4bec0554757527b6d1ef1fe439e4e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5139b586df546a9d1c46804ca400b1cb9ce87236eaf212ebd64edee6747a172a\",\"dweb:/ipfs/QmVa2kcRw3VyuB6j1EVWXACKnkbQZgfXYXNi5voq3XkYG8\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x3f66e0d24a6bfb74a62a667c7229c65add3075375ef77d8eb2f929994bd4ab3e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e1f9dcb71c151c5cd17f7733139100a4a5befb4f1f05e9085e905d0a32276c17\",\"dweb:/ipfs/QmNZBS1kh2y92bKufQbxxfpVRC1aAJDJD5B8qjmFyhuwMq\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x5f36d7d16348d8c37fe64fda932018d6e5e8acecd054f0f97d32db62d20c6c88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bd4e817ea3d2c26bb2be7e58db3eaa403119562c18d4c09cc92fb31aa231496\",\"dweb:/ipfs/QmbpjgL8Hf1mhmUyf9hpuPk4noGAggCdTqaRBFKqNF3AQw\"]}},\"version\":1}",
  "bytecode": "0x6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b0316639e040f7f88888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b0316639e040f7f88888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663a8572a5087878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663f8ed26dc85858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212201a62c346887ec5c073d8d38faa584bd52c05e55d431ae9545acdb34e2d4314ce64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b0316639e040f7f88888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b0316639e040f7f88888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663a8572a5087878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663f8ed26dc85858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212201a62c346887ec5c073d8d38faa584bd52c05e55d431ae9545acdb34e2d4314ce64736f6c63430007060033",
  "immutableReferences": {
    "340": [
      {
        "length": 32,
        "start": 8248
      },
      {
        "length": 32,
        "start": 8735
      },
      {
        "length": 32,
        "start": 10355
      }
    ],
    "344": [
      {
        "length": 32,
        "start": 2218
      },
      {
        "length": 32,
        "start": 4787
      },
      {
        "length": 32,
        "start": 6673
      },
      {
        "length": 32,
        "start": 7755
      },
      {
        "length": 32,
        "start": 9056
      },
      {
        "length": 32,
        "start": 15411
      }
    ],
    "348": [
      {
        "length": 32,
        "start": 4485
      },
      {
        "length": 32,
        "start": 6722
      },
      {
        "length": 32,
        "start": 7857
      },
      {
        "length": 32,
        "start": 9190
      },
      {
        "length": 32,
        "start": 10427
      },
      {
        "length": 32,
        "start": 15740
      }
    ],
    "352": [
      {
        "length": 32,
        "start": 3271
      },
      {
        "length": 32,
        "start": 6536
      },
      {
        "length": 32,
        "start": 6591
      },
      {
        "length": 32,
        "start": 10463
      }
    ],
    "356": [
      {
        "length": 32,
        "start": 3032
      },
      {
        "length": 32,
        "start": 10391
      },
      {
        "length": 32,
        "start": 19128
      },
      {
        "length": 32,
        "start": 19178
      }
    ],
    "360": [
      {
        "length": 32,
        "start": 8107
      },
      {
        "length": 32,
        "start": 19021
      },
      {
        "length": 32,
        "start": 19076
      }
    ],
    "2830": [
      {
        "length": 32,
        "start": 11090
      }
    ]
  },
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "929:34607:1:-:0;;;4351:274;;;;;;;;;-1:-1:-1;586:4:3;567:24;;;;4450:48:1;;;-1:-1:-1;;;4450:48:1;;;;4375:18;;4474:10;;4450:46;;:48;;;;;;;;;;;;;;;4474:10;4450:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4450:48:1;;;;;;;;;;;;;;;;;;;;;4403:95;;;;-1:-1:-1;;;;;;4403:95:1;;;;;;-1:-1:-1;;4403:95:1;;;;;;;;;;;;;;;;;4450:48;4403:95;4508:26;;;;;;;;;;;4450:48;-1:-1:-1;4567:51:1;;4450:48;;4567:37;;;;;:51;;:::i;:::-;4545:73;;-1:-1:-1;;4545:73:1;;;-1:-1:-1;929:34607:1;;2195:364:28;2279:7;;2350:11;2315:31;;;;-1:-1:-1;;2315:31:28;;;;;;2314:47;;-1:-1:-1;2371:13:28;2423:11;2388:31;;;;637:9:30;2388:31:28;;;;;;2387:47;2371:63;;2444:15;2491:11;2469:33;;2480:7;2470;:17;2469:33;;;;;;;;2506:1;2462:45;;-1:-1:-1;2524:28:28;;;-1:-1:-1;2524:28:28;;;;;;;2195:364;-1:-1:-1;;;;;2195:364:28:o;929:34607:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "929:34607:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1516:40;;;:::i;:::-;;;;-1:-1:-1;;;;;1516:40:1;;;;;;;;;;;;;;22926:9006;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22926:9006:1;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22926:9006:1;;;;;;-1:-1:-1;;;22926:9006:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22926:9006:1;;;;;;;;;;-1:-1:-1;22926:9006:1;;-1:-1:-1;22926:9006:1;-1:-1:-1;22926:9006:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3186:33;;;:::i;:::-;;;;-1:-1:-1;;;;;3186:33:1;;;;;;;;;;;;;;3097:41;;;:::i;:::-;;;;-1:-1:-1;;;;;3097:41:1;;;;;;;;;;;;;;;;;;;;;;;;3568:54;;;;;;;;;;;;;;;;-1:-1:-1;3568:54:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3568:54:1;;;;;;;;;;;;;;;;;;;;;;9643:660;;;;;;;;;;;;;;;;-1:-1:-1;9643:660:1;;;;:::i;:::-;;2703:27;;;:::i;:::-;;;;-1:-1:-1;;;;;2703:27:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17551:1190;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17551:1190:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17551:1190:1;;;;;-1:-1:-1;17551:1190:1;;-1:-1:-1;17551:1190:1;;;-1:-1:-1;;;17551:1190:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17551:1190:1;;;;;;;;;;-1:-1:-1;17551:1190:1;;-1:-1:-1;17551:1190:1;-1:-1:-1;17551:1190:1;:::i;2869:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;31981:1915;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31981:1915:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31981:1915:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31981:1915:1;;;;;;;;;;-1:-1:-1;31981:1915:1;;-1:-1:-1;31981:1915:1;-1:-1:-1;31981:1915:1;:::i;18790:1035::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18790:1035:1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18790:1035:1;;;;;;;-1:-1:-1;18790:1035:1;;;;:::i;3462:59::-;;;;;;;;;;;;;;;;-1:-1:-1;3462:59:1;;:::i;:::-;;;;-1:-1:-1;;;;;3462:59:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3462:59:1;;;;;;;;;;;;;3363:52;;;;;;;;;;;;;;;;-1:-1:-1;3363:52:1;;;;:::i;1885:53::-;;;:::i;33950:513::-;;;;;;;;;;;;;;;;-1:-1:-1;33950:513:1;;;;;;;;;;;:::i;34517:1017::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34517:1017:1;;;;-1:-1:-1;;;;;34517:1017:1;;;;;;;;;;;;:::i;9095:499::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9095:499:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9095:499:1;;;;;;;;;;-1:-1:-1;9095:499:1;;-1:-1:-1;9095:499:1;-1:-1:-1;9095:499:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19944:939;;;;;;;;;;;;;;;;-1:-1:-1;19944:939:1;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19944:939:1;;:::i;6187:2854::-;;;;;;;;;;;;;;;;-1:-1:-1;6187:2854:1;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6187:2854:1;;;;;;;;;;;;;;;;;;;;;;1423:41;;;:::i;1789:43::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1608:40;;;:::i;1700:36::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2778:44;;;:::i;3267:49::-;;;;;;;;;;;;;;;;-1:-1:-1;3267:49:1;;;;:::i;:::-;;;;-1:-1:-1;;;;;3267:49:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3267:49:1;;;-1:-1:-1;;;;;3267:49:1;-1:-1:-1;3267:49:1;;;;;;;;;;;;;;;;;;;;;;;;10408:621;;;;;;;;;;;;;;;;-1:-1:-1;10408:621:1;-1:-1:-1;;;;;10408:621:1;;:::i;1516:40::-;;;:::o;22926:9006::-;23136:14;23152;1031:22:3;:20;:22::i;:::-;23186:20:1;23178:35:::1;;;::::0;;-1:-1:-1;;;23178:35:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23178:35:1;;;;;;;;;;;;;::::1;;23224:31;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23224:31:1;-1:-1:-1;;;;;23224:31:1;::::1;::::0;;-1:-1:-1;;;23224:31:1;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;23224:31:1;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;23224:31:1;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23224:31:1;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;23224:31:1;::::1;::::0;::::1;-1:-1:-1::0;23224:31:1;;;-1:-1:-1;;;23224:31:1;;::::1;::::0;;::::1;;;::::0;;;;;;23266:35:::1;;;::::0;;-1:-1:-1;;;23266:35:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23266:35:1;;;;;;;;;;;;;::::1;;23332:10;:228;;23490:23:::0;;-1:-1:-1;;;;;23470:43:1;;::::1;::::0;;::::1;;:90:::0;::::1;;;-1:-1:-1::0;997:49:30::1;-1:-1:-1::0;;;;;23517:43:1;::::1;;23470:90;23332:228;;;23381:23:::0;;-1:-1:-1;;;;;23361:43:1;;::::1;::::0;;::::1;;:90:::0;::::1;;;-1:-1:-1::0;817:10:30::1;-1:-1:-1::0;;;;;23408:43:1;::::1;;23361:90;23311:278;;;::::0;;-1:-1:-1;;;23311:278:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23311:278:1;;;;;;;;;;;;;::::1;;23617:5;23600:22:::0;;-1:-1:-1;;;;23600:22:1::1;::::0;;23670:363:::1;::::0;;::::1;::::0;::::1;::::0;;;;23805:10;:74:::1;;23877:1;23851:10;:22;;;:27;;;;23805:74;;;23844:2;23819:10;:22;;;:27;;;;;;;;23805:74;23670:363;;::::0;;23714:9:::1;::::0;-1:-1:-1;;;;;23714:9:1::1;23670:363;::::0;::::1;::::0;;;23757:17:::1;:15;:17::i;:::-;23670:363;;::::0;;23967:1:::1;23670:363;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;24129:391;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;24267:23;;-1:-1:-1;;;;;24129:391:1::1;::::0;;;;;;;24314:15;;::::1;::::0;24129:391:::1;;::::0;;;;;;;23633:400;;-1:-1:-1;24062:19:1;;::::1;::::0;23967:1;24129:391;;;24368:10;:56:::1;;24404:20;;24368:56;;;24381:20;;24368:56;24129:391:::0;;24455:1:::1;24129:391;::::0;;::::1;::::0;;;;24485:20;::::1;::::0;-1:-1:-1;;;;;24129:391:1::1;::::0;;;;;24092:428;-1:-1:-1;24647:4621:1::1;24654:30:::0;;:35;;::::1;::::0;:78:::1;;-1:-1:-1::0;24693:18:1::1;::::0;::::1;::::0;-1:-1:-1;;;;;24693:39:1;;::::1;::::0;::::1;;;24654:78;24647:4621;;;24748:28;;:::i;:::-;24816:18;::::0;::::1;::::0;-1:-1:-1;;;;;24791:43:1::1;::::0;;24946:10:::1;::::0;::::1;::::0;24885:142:::1;::::0;:10:::1;::::0;24974:11:::1;25003:10:::0;24885:43:::1;:142::i;:::-;24849:178;;24865:16;::::0;::::1;24849:178:::0;::::1;::::0;;::::1;::::0;::::1;24850:13;::::0;::::1;24849:178:::0;;;-1:-1:-1;;25159:33:1;::::1;;25155:216;;;-1:-1:-1::0;;25212:13:1::1;::::0;::::1;:33:::0;25155:216:::1;;;25270:13;::::0;::::1;::::0;637:9:30;25270:33:1::1;::::0;;;::::1;;25266:105;;;637:9:30::0;25323:13:1::1;::::0;::::1;:33:::0;25266:105:::1;25456:42;25484:4;:13;;;25456:27;:42::i;:::-;-1:-1:-1::0;;;;;25432:66:1::1;:21;::::0;::::1;:66:::0;25744:18:::1;::::0;::::1;::::0;25702:378:::1;::::0;25781:10;:98:::1;;25838:21;::::0;::::1;::::0;-1:-1:-1;;;;;25838:41:1;;::::1;::::0;::::1;;25781:98;;;25794:21;::::0;::::1;::::0;-1:-1:-1;;;;;25794:41:1;;::::1;::::0;::::1;;25781:98;25780:184;;25943:4;:21;;;25780:184;;;25903:17;25780:184;25982:15;::::0;::::1;::::0;26015:30;;26063:3:::1;25702:24;:378::i;:::-;25684:14;::::0;::::1;25632:448:::0;25668:14:::1;::::0;::::1;25632:448:::0;25653:13:::1;::::0;::::1;25632:448:::0;-1:-1:-1;;;;;25632:448:1::1;-1:-1:-1::0;25633:18:1;::::1;25632:448:::0;26095:434;::::1;;;26163:43;26180:4;:14;;;26164:4;:13;;;:30;26163:41;:43::i;:::-;26129:77:::0;;::::1;::::0;;26276:14:::1;::::0;::::1;::::0;26249:53:::1;::::0;26276:25:::1;::::0;:23:::1;:25::i;:::-;26249:22;::::0;::::1;::::0;;:26:::1;:53::i;:::-;26224:22;::::0;::::1;:78:::0;26095:434:::1;;;26375:25;:4;:14;;;:23;:25::i;:::-;26341:59:::0;;::::1;::::0;;26487:14:::1;::::0;::::1;::::0;26471:13:::1;::::0;::::1;::::0;26443:71:::1;::::0;26470:43:::1;::::0;26471:30:::1;26470:41;:43::i;:::-;26443:22;::::0;::::1;::::0;;:26:::1;:71::i;:::-;26418:22;::::0;::::1;:96:::0;26095:434:::1;26664:17:::0;;:21:::1;;::::0;26660:204:::1;;26705:13;26738:5;:17;;;26721:34;;:4;:14;;;:34;;;;;26773:14;::::0;::::1;:23:::0;;26721:34;;;::::1;26773:23:::0;;;::::1;::::0;;26814:17:::1;::::0;::::1;:35:::0;;;;::::1;-1:-1:-1::0;;;;;26814:35:1::1;::::0;;-1:-1:-1;26660:204:1::1;26923:15;::::0;::::1;::::0;-1:-1:-1;;;;;26923:19:1::1;::::0;26919:138:::1;;27005:14;::::0;;::::1;::::0;27041:15;;::::1;::::0;26989:68:::1;::::0;27005:14;-1:-1:-1;;;;;;;;;26989:68:1::1;:15;:68::i;:::-;26960:25;::::0;::::1;:97:::0;;;;::::1;::::0;;26919:138:::1;27153:21;::::0;::::1;::::0;27131:18:::1;::::0;::::1;::::0;-1:-1:-1;;;;;27131:43:1;;::::1;::::0;::::1;;27127:2131;;;27269:4;:16;;;27265:1632;;;27484:5;:31;;;27479:565;;27609:348;27665:5;:20;;;27715:1;27746:10;:15;;;27791:10;:27;;;27848:5;:20;;;27898:10;:33;;;27609:12;:26;;:348;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27543:414:1::1;27566:39;::::0;::::1;27543:414:::0;::::1;::::0;;::::1;::::0;::::1;27544:20;::::0;::::1;27543:414:::0;-1:-1:-1;;27983:31:1;::::1;:38:::0;27479:565:::1;28065:19;28111:435;28152:4;:13;;;28196:10;:61;;28237:20;;28196:61;;;28209:5;:25;;;28196:61;28289:10;:61;;28325:5;:25;;;28289:61;;;28302:20;;28289:61;28381:39;::::0;::::1;::::0;28450:20:::1;::::0;::::1;::::0;28500::::1;::::0;::::1;::::0;28111:5:::1;::::0;:435;;;28381:39;28450:20;28111:11:::1;:435::i;:::-;28065:481;;28744:10;28740:44;;;28771:13;;28740:44;28825:53;28848:5;:15;;;28865:12;28825:22;:53::i;:::-;-1:-1:-1::0;;;;;28807:71:1::1;:15;::::0;::::1;:71:::0;-1:-1:-1;27265:1632:1::1;28928:10;:46;;28961:4;:13;;;28928:46;;;28957:1;28941:4;:13;;;:17;28928:46;28915:59;::::0;;::::1;::::0;::::1;:10;::::0;::::1;:59:::0;27127:2131:::1;;;29021:22:::0;;28999:18:::1;::::0;::::1;::::0;-1:-1:-1;;;;;28999:44:1;;::::1;::::0;::::1;;28995:263;;29196:47;29224:5;:18;;;29196:27;:47::i;:::-;29183:60;::::0;;::::1;::::0;::::1;:10;::::0;::::1;:60:::0;28995:263:::1;24647:4621;;;;29364:10;:15;;;29350:29;;:5;:10;;;:29;;;29346:827;;29396:23;29421:29:::0;29470:320:::1;29510:10;:27;;;29559:5;:20;;;29601:10;:15;;;29638:5;:20;;;29680:10;:33;;;29735:10;:37;;;29470:12;:18;;:320;;;;;;;;;:::i;:::-;29911:18;::::0;::::1;::::0;29947:10:::1;::::0;::::1;::::0;29805:5:::1;29804:241:::0;;-1:-1:-1;;;;29804:241:1::1;-1:-1:-1::0;;;;29804:241:1;;::::1;;;-1:-1:-1::0;;;;29804:241:1::1;-1:-1:-1::0;;;29804:241:1;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;29804:241:1::1;-1:-1:-1::0;;;;29804:241:1::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;29804:241:1::1;-1:-1:-1::0;;;;;29804:241:1;;::::1;;::::0;;-1:-1:-1;29346:827:1::1;::::0;-1:-1:-1;29346:827:1::1;;30144:18;::::0;::::1;::::0;30123:5:::1;:39:::0;;-1:-1:-1;;;;;;30123:39:1::1;-1:-1:-1::0;;;;;30123:39:1;;::::1;::::0;;;::::1;::::0;;29346:827:::1;30253:15;::::0;::::1;::::0;30229:20:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30229:39:1;;::::1;::::0;::::1;;30225:72;;30282:15;::::0;::::1;::::0;30270:9:::1;:27:::0;;-1:-1:-1;;;;;;30270:27:1::1;-1:-1:-1::0;;;;;30270:27:1;;::::1;::::0;;;::::1;::::0;;30225:72:::1;30479:10;30475:330;;;30528:25;::::0;::::1;::::0;30505:20:::1;:48:::0;30571:17:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30571:21:1::1;::::0;30567:67:::1;;30617:17;::::0;::::1;::::0;30594:12:::1;:40:::0;;-1:-1:-1;;;;;;30594:40:1;::::1;-1:-1:-1::0;;;;;30594:40:1;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;30567:67:::1;30475:330;;;30688:25;::::0;::::1;::::0;30665:20:::1;:48:::0;30731:17:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30731:21:1::1;::::0;30727:67:::1;;30777:17;::::0;::::1;::::0;30754:12:::1;:40:::0;;-1:-1:-1;;;30754:40:1;;::::1;-1:-1:-1::0;;;;;30754:40:1;;::::1;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;30727:67:::1;30850:10;30836:24;;:10;:24;;;:202;;30965:22;::::0;::::1;::::0;31007:30;;30989:48;::::1;30836:202;;;30894:5;:30;;;30876:15;:48;30926:5;:22;;;30836:202;30815:223:::0;;-1:-1:-1;30815:223:1;-1:-1:-1;31097:688:1;::::1;;;31141:1;31131:7;:11;31127:82;;;31144:65;31172:6;31180:9;31200:7;31199:8;;31144:27;:65::i;:::-;31224:22;31249:10;:8;:10::i;:::-;31273:82;::::0;-1:-1:-1;;;31273:82:1;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;31224:35;;-1:-1:-1;31297:10:1::1;::::0;31273:58:::1;::::0;31332:7;;31341;;31350:4;;;;31273:82;;;;31350:4;;;;31273:82;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31417:10;:8;:10::i;:::-;31377:36;:14:::0;31404:7;31377:18:::1;:36::i;:::-;:50;;31369:66;;;::::0;;-1:-1:-1;;;31369:66:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31369:66:1;;;;;;;;;;;;;::::1;;31097:688;;;;31480:1;31470:7;:11;31466:82;;;31483:65;31511:6;31519:9;31539:7;31538:8;;31483:27;:65::i;:::-;31563:22;31588:10;:8;:10::i;:::-;31612:82;::::0;-1:-1:-1;;;31612:82:1;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;31563:35;;-1:-1:-1;31636:10:1::1;::::0;31612:58:::1;::::0;31671:7;;31680;;31689:4;;;;31612:82;;;;31689:4;;;;31612:82;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31756:10;:8;:10::i;:::-;31716:36;:14:::0;31743:7;31716:18:::1;:36::i;:::-;:50;;31708:66;;;::::0;;-1:-1:-1;;;31708:66:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31708:66:1;;;;;;;;;;;;;::::1;;31097:688;;31846:18;::::0;;::::1;::::0;31866:15:::1;::::0;::::1;::::0;31883:10:::1;::::0;;::::1;::::0;31800:94;;;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;31800:94:1;;::::1;::::0;;;;-1:-1:-1;;;;;31800:94:1;;::::1;::::0;;;;;;;::::1;;-1:-1:-1::0;31800:94:1;;;;;;;::::1;::::0;31805:10:::1;::::0;31800:94:::1;::::0;;;;-1:-1:-1;31800:94:1;;::::1;-1:-1:-1::0;;31904:5:1::1;:21:::0;;-1:-1:-1;;;;31904:21:1::1;-1:-1:-1::0;;;31904:21:1::1;::::0;;-1:-1:-1;22926:9006:1;;;;-1:-1:-1;22926:9006:1;-1:-1:-1;;;;;;22926:9006:1:o;3186:33::-;;;-1:-1:-1;;;;;3186:33:1;;:::o;3097:41::-;;;-1:-1:-1;;;;;3097:41:1;;;;-1:-1:-1;;;3097:41:1;;;;:::o;3568:54::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3568:54:1;;;;;-1:-1:-1;;;3568:54:1;;-1:-1:-1;;;;;3568:54:1;;-1:-1:-1;;;3568:54:1;;;;;:::o;9643:660::-;4011:5;:14;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;1031::3::1;:20;:22::i;:::-;9806:36:1::2;9845:32:::0;;-1:-1:-1;;;9845:32:1;::::2;;;::::0;9955:76:::2;:12;9845:32:::0;10004:26;9955:17:::2;:76::i;:::-;10041:5;:64:::0;;-1:-1:-1;;;;10041:64:1::2;-1:-1:-1::0;;;10041:64:1::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;;-1:-1:-1;10119:62:1;;::::2;;10115:181;;10200:96;::::0;;::::2;::::0;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;;;;;;;;::::2;10115:181;-1:-1:-1::0;;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;-1:-1:-1;9643:660:1:o;2703:27::-;;;-1:-1:-1;;;;;2703:27:1;;;-1:-1:-1;;;2703:27:1;;;;;;-1:-1:-1;;;2703:27:1;;;;;-1:-1:-1;;;2703:27:1;;;;;-1:-1:-1;;;2703:27:1;;;;;-1:-1:-1;;;2703:27:1;;;;;-1:-1:-1;;;2703:27:1;;;;:::o;17551:1190::-;17733:15;4011:14;;17733:15;;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;-1:-1:-1;;;;;17785:10:1;::::1;17777:19;;;::::0;::::1;;17809:17;17828::::0;17861:272:::1;17894:225;;;;;;;;17944:9;-1:-1:-1::0;;;;;17894:225:1::1;;;;;17986:9;17894:225;;;;;;18028:9;17894:225;;;;;;18075:25;18082:6;-1:-1:-1::0;;;;;18075:14:1::1;:23;:25::i;:::-;17894:225;;::::0;;17861:15:::1;:272::i;:::-;17806:327;;;;;18162:10;18144:29;;18201:10;18183:29;;18223:22;18255::::0;18301:1:::1;18291:7;:11;18287:44;;;18321:10;:8;:10::i;:::-;18304:27;;18287:44;18345:11:::0;;18341:44:::1;;18375:10;:8;:10::i;:::-;18358:27;;18341:44;18395:82;::::0;-1:-1:-1;;;18395:82:1;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;18419:10:::1;::::0;18395:58:::1;::::0;18454:7;;18463;;18472:4;;;;18395:82;;;;18472:4;;;;18395:82;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18501:1;18491:7;:11;18487:73;;;18543:10;:8;:10::i;:::-;18512:27;:14:::0;18531:7;18512:18:::1;:27::i;:::-;:41;;18504:56;;;::::0;;-1:-1:-1;;;18504:56:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18504:56:1;;;;;;;;;;;;;::::1;;18574:11:::0;;18570:73:::1;;18626:10;:8;:10::i;:::-;18595:27;:14:::0;18614:7;18595:18:::1;:27::i;:::-;:41;;18587:56;;;::::0;;-1:-1:-1;;;18587:56:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18587:56:1;;;;;;;;;;;;;::::1;;18698:9;18659:75;;18687:9;18659:75;;18676:9;-1:-1:-1::0;;;;;18659:75:1::1;;18664:10;18709:6;18717:7;18726;18659:75;;;;-1:-1:-1::0;;;;;18659:75:1::1;;;;;;-1:-1:-1::0;;;;;18659:75:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;-1:-1:-1;17551:1190:1;;;;-1:-1:-1;17551:1190:1;-1:-1:-1;;;;;;17551:1190:1:o;2869:44::-;;;;:::o;31981:1915::-;4011:5;:14;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;1031::3::1;:20;:22::i;:::-;32177:9:1::2;::::0;-1:-1:-1;;;;;32177:9:1::2;::::0;32196:28:::2;;;::::0;;-1:-1:-1;;;32196:28:1;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32196:28:1;;;;;;;;;;;;;::::2;;32235:12;32250:44;32276:7;32285:3;32250:44;;32290:3;32250:25;:44::i;:::-;32235:59;;32304:12;32319:44;32345:7;32354:3;32319:44;;32359:3;32319:25;:44::i;:::-;32304:59;;32373:22;32398:10;:8;:10::i;:::-;32373:35;;32418:22;32443:10;:8;:10::i;:::-;32418:35:::0;-1:-1:-1;32468:11:1;;32464:72:::2;;32481:55;32509:6;32517:9;32528:7;32481:27;:55::i;:::-;32550:11:::0;;32546:72:::2;;32563:55;32591:6;32599:9;32610:7;32563:27;:55::i;:::-;32629:78;::::0;-1:-1:-1;;;32629:78:1;;::::2;::::0;::::2;::::0;;;;;;;;;;;;;;;;;;;;;;32654:10:::2;::::0;32629:60:::2;::::0;32690:4;;32696;;32702;;;;32629:78;;;;32702:4;;;;32629:78;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;32718:21;32742:10;:8;:10::i;:::-;32718:34;;32762:21;32786:10;:8;:10::i;:::-;32762:34:::0;-1:-1:-1;32843:13:1;32815:24:::2;:14:::0;32834:4;32815:18:::2;:24::i;:::-;:41;;32807:56;;;::::0;;-1:-1:-1;;;32807:56:1;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32807:56:1;;;;;;;;;;;;;::::2;;32909:13:::0;32881:24:::2;:14:::0;32900:4;32881:18:::2;:24::i;:::-;:41;;32873:56;;;::::0;;-1:-1:-1;;;32873:56:1;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32873:56:1;;;;;;;;;;;;;::::2;;33044:30:::0;;::::2;33100::::0;;::::2;33145:9:::0;;33141:332:::2;;33170:18;33191:17:::0;;-1:-1:-1;;;33191:17:1;::::2;:22:::0;;;33243:17;;:44:::2;;33275:12;33267:20;;:5;:20;;;;;;33243:44;;;33263:1;33243:44;33227:60:::0;-1:-1:-1;;;;;;33305:18:1;::::2;::::0;33301:61:::2;;33325:12;:37:::0;;-1:-1:-1;;;;;33325:37:1;;::::2;::::0;::::2;;-1:-1:-1::0;;;;;;33325:37:1;;::::2;;::::0;;33301:61:::2;33400:62;33416:13:::0;;::::2;-1:-1:-1::0;;;;;;;;33400:62:1;::::2;:15;:62::i;:::-;33376:20;:86:::0;;;;::::2;::::0;;-1:-1:-1;;33141:332:1::2;33486:9:::0;;33482:332:::2;;33511:18;33532:17:::0;;-1:-1:-1;;;33532:17:1;::::2;33553:1;33532:22:::0;;;;33584:17;;:44:::2;;33616:12;33608:20;;:5;:20;;;;;;33584:44;;;33604:1;33584:44;33568:60:::0;-1:-1:-1;;;;;;33646:18:1;::::2;::::0;33642:61:::2;;33666:12;:37:::0;;-1:-1:-1;;;33666:37:1;;::::2;-1:-1:-1::0;;;;;33666:37:1;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;;33642:61:::2;33741:62;33757:13:::0;;::::2;-1:-1:-1::0;;;;;;;;33741:62:1;::::2;:15;:62::i;:::-;33717:20;:86:::0;;;;::::2;::::0;;-1:-1:-1;;33482:332:1::2;33847:9;-1:-1:-1::0;;;;;33829:60:1::2;33835:10;-1:-1:-1::0;;;;;33829:60:1::2;;33858:7;33867;33876:5;33883;33829:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;-1:-1:-1;;;;;;;;;;;;31981:1915:1:o;18790:1035::-;18990:15;4011:14;;18990:15;;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;19179:47:::1;:9;19193:10;19205:9:::0;19216;19179:13:::1;:47::i;:::-;19266:20;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19266:20:1;;::::1;19247:39:::0;;::::1;;:81;;19312:16;19247:81;;;19289:20;::::0;::::1;::::0;-1:-1:-1;;;;;19289:20:1::1;19247:81;19367:20;::::0;::::1;::::0;19237:91;;-1:-1:-1;;;;19367:20:1;::::1;-1:-1:-1::0;;;;;19367:20:1;;::::1;19348:39:::0;;::::1;;:81;;19413:16;19348:81;;;19390:20;::::0;::::1;::::0;-1:-1:-1;;;19390:20:1;::::1;-1:-1:-1::0;;;;;19390:20:1::1;19348:81;19338:91:::0;-1:-1:-1;;;;;;19444:11:1;::::1;::::0;19440:142:::1;;19471:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;19471:31:1;::::1;-1:-1:-1::0;;;;;19471:31:1;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;19516:55:::1;::::0;19544:6:::1;::::0;19552:9;;19516:55;::::1;:27;:55::i;:::-;-1:-1:-1::0;;;;;19595:11:1;::::1;::::0;19591:142:::1;;19622:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;19622:31:1;;::::1;-1:-1:-1::0;;;19622:31:1;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;19667:55:::1;::::0;19695:6:::1;::::0;19703:9;;19667:55;::::1;:27;:55::i;:::-;19748:70;::::0;;-1:-1:-1;;;;;19748:70:1;::::1;::::0;;-1:-1:-1;;;;;19748:70:1;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;19756:10:::1;::::0;19748:70:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;18790:1035;;;;-1:-1:-1;18790:1035:1;-1:-1:-1;;;;18790:1035:1:o;3462:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3462:59:1;;;;;;;;;;-1:-1:-1;;;3462:59:1;;;;:::o;3363:52::-;;;;;;;;;;;;;:::o;1885:53::-;;;:::o;33950:513::-;4011:5;:14;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;4291:35:::1;::::0;;-1:-1:-1;;;4291:35:1;;;;4310:7:::1;-1:-1:-1::0;;;;;4291:33:1::1;::::0;-1:-1:-1;;4291:35:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:33;:35;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4291:35:1;-1:-1:-1;;;;;4277:49:1::1;:10;:49;4269:58;;;::::0;::::1;;34086:17:::2;::::0;::::2;::::0;;:62:::2;;;34124:1;34108:12;:17;;;;:39;;;;;34145:2;34129:12;:18;;;;34108:39;34085:148;;;;-1:-1:-1::0;34170:17:1::2;::::0;::::2;::::0;;:62:::2;;;34208:1;34192:12;:17;;;;:39;;;;;34229:2;34213:12;:18;;;;34192:39;34064:179;;;::::0;::::2;;34253:20;34276:17:::0;;-1:-1:-1;;;;34303:54:1;::::2;-1:-1:-1::0;;;34276:17:1::2;34355:1;34339:17:::0;;;;;34323:34;::::2;34303:54:::0;::::2;::::0;::::2;::::0;;;::::2;::::0;;;34372:84:::2;::::0;;34387:19;34276:17;;;::::2;34387:19:::0;;;34372:84;;34408:19;;;;;;;34372:84:::2;::::0;::::2;::::0;;;::::2;::::0;;;;;;::::2;::::0;;;;;34276:17;::::2;::::0;34372:84:::2;::::0;;;;;;;;::::2;-1:-1:-1::0;;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;-1:-1:-1;33950:513:1:o;34517:1017::-;34692:15;4011:14;;34692:15;;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;4291:35:::1;::::0;;-1:-1:-1;;;4291:35:1;;;;4310:7:::1;-1:-1:-1::0;;;;;4291:33:1::1;::::0;-1:-1:-1;;4291:35:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:33;:35;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4291:35:1;-1:-1:-1;;;;;4277:49:1::1;:10;:49;4269:58;;;::::0;::::1;;34765:12:::2;:19:::0;-1:-1:-1;;;;;34765:19:1;;::::2;34746:38:::0;;::::2;;:79;;34809:16;34746:79;;;34787:12;:19:::0;-1:-1:-1;;;;;34787:19:1::2;34746:79;34864:12;:19:::0;34736:89;;-1:-1:-1;;;;34864:19:1;::::2;-1:-1:-1::0;;;;;34864:19:1;;::::2;34845:38:::0;;::::2;;:79;;34908:16;34845:79;;;34886:12;:19:::0;-1:-1:-1;;;34886:19:1;::::2;-1:-1:-1::0;;;;;34886:19:1::2;34845:79;34835:89:::0;-1:-1:-1;;;;;;34939:11:1;::::2;::::0;34935:256:::2;;34981:12;:19:::0;-1:-1:-1;;;;;34970:30:1;;::::2;34981:19:::0;::::2;34970:30;34966:45;;;-1:-1:-1::0;;35002:9:1;;;;34966:45:::2;35081:12;:30:::0;;-1:-1:-1;;;;;;35081:30:1;::::2;-1:-1:-1::0;;;;;35081:30:1;;::::2;::::0;;::::2;::::0;::::2;;::::0;;;35125:55:::2;::::0;35153:6:::2;::::0;35161:9;;35125:55;::::2;:27;:55::i;:::-;-1:-1:-1::0;;;;;35204:11:1;::::2;::::0;35200:256:::2;;35246:12;:19:::0;-1:-1:-1;;;;;35235:30:1;;::::2;-1:-1:-1::0;;;35246:19:1;;::::2;;35235:30;35231:45;;;-1:-1:-1::0;;35267:9:1;35231:45:::2;35346:12;:30:::0;;-1:-1:-1;;;;;35346:30:1;;::::2;-1:-1:-1::0;;;35346:30:1;;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;35390:55:::2;::::0;35418:6:::2;::::0;35426:9;;35390:55;::::2;:27;:55::i;:::-;35471:56;::::0;;-1:-1:-1;;;;;35471:56:1;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;;;35471:56:1;::::2;::::0;35487:10:::2;::::0;35471:56:::2;::::0;;;;;;;;;::::2;4086:5:::0;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;34517:1017;;;;-1:-1:-1;34517:1017:1;-1:-1:-1;;34517:1017:1:o;9095:499::-;9230:30;9262:51;1031:22:3;:20;:22::i;:::-;9348:239:1::1;9386:17;:15;:17::i;:::-;9421:11;;9348:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;9450:10:1;9518:9:::1;::::0;9348:12:::1;::::0;;;-1:-1:-1;;;;9450:10:1;::::1;;;::::0;-1:-1:-1;9478:22:1::1;-1:-1:-1::0;;;9478:22:1;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;;9518:9:1;;::::1;::::0;-1:-1:-1;;;9545:28:1;::::1;;9348:20;:239::i;:::-;9329:258;;;;9095:499:::0;;;;;:::o;19944:939::-;20070:15;4011:14;;20070:15;;-1:-1:-1;;;4011:14:1;;;;4003:30;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;-1:-1:-1;;;4003:30:1;;;;;;;;;;;;;;;4060:5;4043:22;;-1:-1:-1;;;;4043:22:1;;;20232:227:::1;::::0;;::::1;::::0;::::1;::::0;;20282:10:::1;20232:227:::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;4060:5;;;;20199:274:::1;::::0;20232:227;;;20415:25:::1;-1:-1:-1::0;;;;;20415:14:1;::::1;:23;:25::i;:::-;20414:26;;20232:227;;::::0;;20199:15:::1;:274::i;:::-;20114:359;;;;;;20503:10;20502:11;;20484:30;;20543:10;20542:11;;20524:30;;20579:1;20569:7;:11;:26;;;;20594:1;20584:7;:11;20569:26;20565:232;;;20676:20;::::0;::::1;::::0;;-1:-1:-1;;;;;;;;;20733:20:1;;::::1;-1:-1:-1::0;;;;;20733:20:1;;::::1;:39:::0;::::1;20611:175:::0;::::1;::::0;;::::1;20676:20:::0;;::::1;20611:175:::0;;::::1;::::0;;;::::1;20676:39:::0;;::::1;20611:175;;::::0;;20565:232:::1;20812:64;::::0;;-1:-1:-1;;;;;20812:64:1;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;20817:10:::1;::::0;20812:64:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;;4086:5:1;:21;;-1:-1:-1;;;;4086:21:1;-1:-1:-1;;;4086:21:1;;;-1:-1:-1;19944:939:1;;;;-1:-1:-1;19944:939:1;-1:-1:-1;;19944:939:1:o;6187:2854::-;6356:26;6396:37;6447:20;1031:22:3;:20;:22::i;:::-;6492:32:1::1;6503:9;6514;6492:10;:32::i;:::-;6824:16;::::0;;::::1;::::0;::::1;6535:25;6824:16:::0;;;:5:::1;:16;::::0;;;;;6880;;::::1;::::0;;::::1;::::0;;;;7063:27:::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;7108:36:1;::::1;-1:-1:-1::0;;;;;7108:36:1::1;::::0;6535:25;;-1:-1:-1;;;7162:20:1;::::1;;;::::0;6535:25;;6824:16;;-1:-1:-1;;;7200:17:1;::::1;;;::::0;7245:25:::1;;;::::0;::::1;;7438:27;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;7483:36:1;::::1;-1:-1:-1::0;;;;;7483:36:1::1;::::0;-1:-1:-1;;;;7537:20:1;::::1;;;::::0;-1:-1:-1;;;;7575:17:1;::::1;;;::::0;7620:25:::1;;;::::0;::::1;;-1:-1:-1::0;;7666:27:1::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;7666:27:1;-1:-1:-1;;;;;7666:27:1;::::1;::::0;;-1:-1:-1;;;7666:27:1;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;7666:27:1;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;7666:27:1;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7666:27:1;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;7666:27:1;::::1;::::0;::::1;-1:-1:-1::0;7666:27:1;;;-1:-1:-1;;;7666:27:1;;::::1;::::0;;::::1;;;::::0;;;;;;-1:-1:-1;7708:23:1;;::::1;::::0;;::::1;;7704:1331;::::0;-1:-1:-1;7704:1331:1::1;;-1:-1:-1::0;7772:41:1;;;::::1;::::0;-1:-1:-1;7831:73:1;::::1;::::0;-1:-1:-1;7922:41:1;::::1;::::0;-1:-1:-1;7747:230:1::1;;7704:1331;8012:9;7998:23;;:6;:11;;;:23;;;7994:1041;;;8037:11;8051:17;:15;:17::i;:::-;8263:11;::::0;::::1;::::0;8296:23:::1;::::0;::::1;::::0;8341:9:::1;::::0;8372:29:::1;::::0;::::1;::::0;8037:31;;-1:-1:-1;8083:20:1::1;::::0;;;8166:253:::1;::::0;:12:::1;::::0;8037:31;;8083:20;;8263:11;8296:23;-1:-1:-1;;;;;8341:9:1::1;::::0;8166:26:::1;:253::i;:::-;8458:36:::0;;::::1;:58:::0;;;::::1;::::0;-1:-1:-1;;8534:91:1;;;::::1;:149:::0;;;::::1;::::0;-1:-1:-1;8701:26:1;;::::1;:48;::::0;-1:-1:-1;8433:330:1::1;::::0;-1:-1:-1;;8433:330:1::1;7994:1041;-1:-1:-1::0;8819:41:1;;;::::1;::::0;-1:-1:-1;8878:73:1::1;::::0;-1:-1:-1;8969:41:1;::::1;::::0;-1:-1:-1;1063:1:3::1;6187:2854:1::0;;;;;:::o;1423:41::-;;;:::o;1789:43::-;;;:::o;1608:40::-;;;:::o;1700:36::-;;;:::o;2778:44::-;;;;:::o;3267:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3267:49:1;;;-1:-1:-1;;;3267:49:1;;;;;;;;;;;;-1:-1:-1;;;3267:49:1;;-1:-1:-1;;;;;3267:49:1;;-1:-1:-1;;;3267:49:1;;;;;-1:-1:-1;;;3267:49:1;;;;;:::o;10408:621::-;10486:5;:18;-1:-1:-1;;;;;10486:18:1;:23;10478:38;;;;;-1:-1:-1;;;10478:38:1;;;;;;;;;;;;-1:-1:-1;;;10478:38:1;;;;;;;;;;;;;;;10527:10;10540:41;10568:12;10540:27;:41::i;:::-;10527:54;;10593:18;10613:22;10639:42;10663:17;:15;:17::i;:::-;10639:12;;:23;:42::i;:::-;10700:276;;;;;;;;-1:-1:-1;;;;;10700:276:1;;;;;;;;;;;;;;;;-1:-1:-1;10700:276:1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10700:276:1;;;;;-1:-1:-1;10700:276:1;;;;;;;;10692:284;;-1:-1:-1;;;;;;;;;10692:284:1;;;;;-1:-1:-1;;;;10692:284:1;-1:-1:-1;;;;10692:284:1;;;;;;;;;;;;;;;;-1:-1:-1;;;;10692:284:1;-1:-1:-1;;;10692:284:1;;;;-1:-1:-1;;;;10692:284:1;-1:-1:-1;;;10692:284:1;;;;;;;-1:-1:-1;;;;10692:284:1;;;;;;;;10992:30;;;;;;;;;;;;;10700:276;;-1:-1:-1;10700:276:1;;-1:-1:-1;10992:30:1;;;;;;;;;10408:621;;;;:::o;2195:364:28:-;2279:7;;2350:11;2315:31;;;;-1:-1:-1;;2315:31:28;;;;;;2314:47;;-1:-1:-1;2371:13:28;2423:11;2388:31;;;;637:9:30;2388:31:28;;;;;;2387:47;2371:63;;2444:15;2491:11;2469:33;;2480:7;2470;:17;2469:33;;;;;;;;2506:1;2462:45;;-1:-1:-1;2524:28:28;;;-1:-1:-1;;;;;2524:28:28;;;;;;2517:35;;;;;2195:364;;;;:::o;830:96:3:-;910:8;-1:-1:-1;;;;;893:25:3;901:4;893:25;885:34;;;;;;830:96::o;5035:138:1:-;5125:15;5035:138;:::o;2188:1921:29:-;2372:10;2384:16;2412;2438:11;2431:18;;:4;:18;;;;;;;;2412:37;;2470:1;2463:4;:8;;;:35;;;;;2482:11;2475:18;;:4;:18;;;;;;;;:23;;;;2463:35;2459:53;;;-1:-1:-1;;2500:12:29;2459:53;2562:3;2558:1545;;;2582:13;2597:12;2613:20;2622:10;2613:8;:20::i;:::-;2750:1;2793:13;;;;;2714:12;2793:13;;;;;;;;;;;2750:11;;;;;;;2729:33;;-1:-1:-1;;2729:33:29;2793:20;;;2960:11;;;;-1:-1:-1;2581:52:29;;-1:-1:-1;2581:52:29;;-1:-1:-1;2729:33:29;2960:11;3102:170;;3261:11;3250:6;3244:13;;3231:10;:26;3230:42;3102:170;;;3200:11;3161:34;3188:6;3161:26;:34::i;:::-;3152:6;:43;3146:50;;3133:10;:63;3132:79;3102:170;3095:177;;2558:1545;;;;;;;3401:13;3416:12;3432:24;3441:10;3454:1;3441:14;3432:8;:24::i;:::-;3400:56;;;;3528:12;3561:1;3551:6;3546:11;;:1;:11;;3545:17;3543:20;3528:35;;3577:14;3610:4;3594;:13;3599:7;3594:13;;;;;;;;;;;;;;;;:20;3577:37;;3753:6;3763:1;3753:11;;3739:25;;3895:11;:197;;4081:11;4070:6;4052:15;:24;4046:31;;4029:10;4042:1;4029:14;:48;4028:64;3895:197;;;3998:11;3987:6;3949:35;3977:6;3949:27;:35::i;:::-;:44;3943:51;;3926:10;3939:1;3926:14;:68;3925:84;3895:197;3888:204;;2558:1545;;;;;2188:1921;;;;;;;;:::o;1355:2580:30:-;1418:20;1450:15;1475:1;1468:4;:8;;;:57;;1519:4;1512:12;;1468:57;;;1495:4;1488:12;;1487:13;;1468:57;1450:75;-1:-1:-1;637:9:30;1543:28;;;1535:42;;;;;-1:-1:-1;;;1535:42:30;;;;;;;;;;;;-1:-1:-1;;;1535:42:30;;;;;;;;;;;;;;;1588:13;1614:3;1604:13;;:93;;-1:-1:-1;;;1604:93:30;;;1625:34;1604:93;1588:109;;;-1:-1:-1;1721:3:30;1711:13;;:18;1707:83;;1748:34;1740:42;1787:3;1739:51;1707:83;1814:3;1804:13;;:18;1800:83;;1841:34;1833:42;1880:3;1832:51;1800:83;1907:3;1897:13;;:18;1893:83;;1934:34;1926:42;1973:3;1925:51;1893:83;2000:4;1990:14;;:19;1986:84;;2028:34;2020:42;2067:3;2019:51;1986:84;2094:4;2084:14;;:19;2080:84;;2122:34;2114:42;2161:3;2113:51;2080:84;2188:4;2178:14;;:19;2174:84;;2216:34;2208:42;2255:3;2207:51;2174:84;2282:4;2272:14;;:19;2268:84;;2310:34;2302:42;2349:3;2301:51;2268:84;2376:5;2366:15;;:20;2362:85;;2405:34;2397:42;2444:3;2396:51;2362:85;2471:5;2461:15;;:20;2457:85;;2500:34;2492:42;2539:3;2491:51;2457:85;2566:5;2556:15;;:20;2552:85;;2595:34;2587:42;2634:3;2586:51;2552:85;2661:5;2651:15;;:20;2647:85;;2690:34;2682:42;2729:3;2681:51;2647:85;2756:6;2746:16;;:21;2742:86;;2786:34;2778:42;2825:3;2777:51;2742:86;2852:6;2842:16;;:21;2838:86;;2882:34;2874:42;2921:3;2873:51;2838:86;2948:6;2938:16;;:21;2934:86;;2978:34;2970:42;3017:3;2969:51;2934:86;3044:6;3034:16;;:21;3030:86;;3074:34;3066:42;3113:3;3065:51;3030:86;3140:7;3130:17;;:22;3126:86;;3171:33;3163:41;3209:3;3162:50;3126:86;3236:7;3226:17;;:22;3222:85;;3267:32;3259:40;3304:3;3258:49;3222:85;3331:7;3321:17;;:22;3317:83;;3362:30;3354:38;3397:3;3353:47;3317:83;3424:7;3414:17;;:22;3410:78;;3455:25;3447:33;3485:3;3446:42;3410:78;3510:1;3503:4;:8;;;3499:47;;;3541:5;-1:-1:-1;;3541:5:30;3521:25;;;;;3513:33;;3499:47;3896:17;;;:22;:30;;3925:1;3896:30;;;3921:1;3896:30;3879:48;;3889:2;3880:5;:11;;3879:48;3856:72;;1355:2580;;;;;:::o;1391:3239:27:-;1638:24;;;;-1:-1:-1;;;;;1797:41:27;;;;;;;;1863:20;;;;;;1894:1354;;1921:30;1954:61;1978:15;2002:7;1996:3;:13;1954:61;;2011:3;1954:15;:61::i;:::-;1921:94;;2040:10;:222;;2175:87;2205:19;2226:18;2246:9;2257:4;2175:29;:87::i;:::-;2040:222;;;2069:87;2099:18;2119:19;2140:9;2151:4;2069:29;:87::i;:::-;2029:233;;2306:8;2280:22;:34;2276:336;;2335:18;2316:37;;2276:336;;;2407:205;2468:19;2509:9;2540:22;2584:10;2407:39;:205::i;:::-;2388:224;;2276:336;1894:1354;;;;2655:10;:224;;2791:88;2821:19;2842:18;2862:9;2873:5;2791:29;:88::i;:::-;2655:224;;;2684:88;2714:18;2734:19;2755:9;2766:5;2684:29;:88::i;:::-;2643:236;;2926:9;2906:15;2905:16;;2897:38;2893:344;;2956:18;2937:37;;2893:344;;;3028:209;3090:19;3131:9;3171:15;3170:16;;3209:10;3028:40;:209::i;:::-;3009:228;;2893:344;-1:-1:-1;;;;;3269:38:27;;;;;;;3358:732;;;;3399:3;:14;;;;;3406:7;3399:14;:145;;3459:85;3489:16;3507:19;3528:9;3539:4;3459:29;:85::i;:::-;3399:145;;;3432:8;3399:145;3388:156;;3570:3;:15;;;;;3578:7;3577:8;3570:15;:148;;3632:86;3662:16;3680:19;3701:9;3712:5;3632:29;:86::i;:::-;3570:148;;;3604:9;3570:148;3558:160;;3358:732;;;3760:3;:14;;;;;3767:7;3760:14;:145;;3820:85;3850:19;3871:16;3889:9;3900:4;3820:29;:85::i;:::-;3760:145;;;3793:8;3760:145;3749:156;;3931:3;:15;;;;;3939:7;3938:8;3931:15;:148;;3993:86;4023:19;4044:16;4062:9;4073:5;3993:29;:86::i;:::-;3931:148;;;3965:9;3931:148;3919:160;;3358:732;4180:7;4179:8;:49;;;;;4212:15;4211:16;;4191:9;:37;4179:49;4175:117;;;4265:15;4264:16;;4244:37;;4175:117;4306:7;:49;;;;-1:-1:-1;;;;;;4317:38:27;;;;;;;;4306:49;4302:322;;;4503:8;4484:15;4476:35;4464:47;;4302:322;;;4554:59;4580:8;4590:7;4554:59;;4605:7;4599:3;:13;4554:59;;:25;:59::i;:::-;4542:71;;4302:322;1391:3239;;;;;;;;;;;;;:::o;911:121:25:-;963:8;-1:-1:-1;;;991:10:25;;983:19;;;;;;-1:-1:-1;1023:1:25;911:121::o;1560:120:22:-;1649:5;;;1644:16;;;;1616:8;1665:6;;;1644:28;1636:37;;;;;;1560:120;;;;:::o;1263:::-;1352:5;;;1347:16;;;;1319:8;1368:6;;;1347:28;1339:37;;;;;742:3776:20;854:14;;;-1:-1:-1;;1361:1:20;1358;1351:20;1393:9;;;;-1:-1:-1;1444:13:20;;;1428:14;;;;1424:34;;-1:-1:-1;1540:10:20;1536:179;;1588:1;1574:11;:15;1566:24;;;;;;-1:-1:-1;1641:23:20;;;;-1:-1:-1;1691:13:20;;1536:179;1842:5;1828:11;:19;1820:28;;;;;;2125:17;2201:11;2198:1;2195;2188:25;2553:12;2568;;;:26;;2688:22;;;;;3491:1;3472;:15;;3471:21;;3718:17;;;3714:21;;3707:28;3776:17;;;3772:21;;3765:28;3835:17;;;3831:21;;3824:28;3894:17;;;3890:21;;3883:28;3953:17;;;3949:21;;3942:28;4013:17;;;4009:21;;;4002:28;3060:12;;;;3056:23;;;3081:1;3052:31;2330:20;;;2319:32;;;3111:12;;;;2373:21;;;;2816:16;;;;3102:21;;;;4477:11;;;;;-1:-1:-1;;742:3776:20;;;;;;:::o;12646:1943:23:-;12884:20;;12963:15;;;12959:257;;12994:23;13020:4;13025:5;13020:11;;;;;;;;;12994:37;;;;;;;;13020:11;;;;12994:37;;;;;;;;-1:-1:-1;;;12994:37:23;;;;;;;;;;-1:-1:-1;12994:37:23;;;-1:-1:-1;;;12994:37:23;;-1:-1:-1;;;;;12994:37:23;;;;;;;;-1:-1:-1;;;12994:37:23;;;;;;;;;;;;;-1:-1:-1;13049:27:23;;;13045:78;;13085:38;13095:4;13101;13107;13113:9;13085;:38::i;:::-;13078:45;;13045:78;13145:4;:19;;;13166:4;:38;;;13137:68;;;;;;;12959:257;13242:17;;;13226:13;;13346:83;13373:4;13242;:17;13393:4;13399:5;13406:9;13417:11;13346:26;:83::i;:::-;13270:159;;;;13454:10;:25;;;13444:35;;:6;:35;;;13440:1143;;;13545:10;:25;;;13572:10;:44;;;13537:80;;;;;;;;;13440:1143;13648:24;;13638:34;;;;;;;13634:949;;;13739:9;:24;;;13765:9;:43;;;13731:78;;;;;;;;;13634:949;13932:25;;13905:24;;14142:25;;;;;14115:24;;;;13905:52;;;;;13992:34;;;14113:113;;;;;14114:77;;;;14115:52;14114:77;;;;;;;;14113:113;14065:10;:25;;;:161;14516:20;14344:192;;14501:11;14345:167;;14428:10;:44;;;14382:9;:43;;;:90;-1:-1:-1;;;;;14345:153:23;:167;14344:192;;;;;;14244:10;:44;;;:314;14040:532;;;;;;;;;12646:1943;;;;;;;;;;;:::o;8861:837:28:-;9204:10;;;;;;9148:19;9204:10;;;;;;;;;;;;9276:26;;;;;9253:49;;;9224:78;;;9364:26;;;;;9341:49;;;9312:78;;;9474:35;;;;;9630:19;-1:-1:-1;;;;;;;;;;;9474:35:28;;;;;9438:71;;;9400:109;;;;-1:-1:-1;;;;;;;;9400:109:28;;;;;;;9565:26;;;;9548:43;;;9519:72;;;;;-1:-1:-1;;9519:72:28;;;;;;;;9630:19;;;;;9623:26;;;9601:48;;;;-1:-1:-1;;;;9601:48:28;;;;;;;;;;9674:17;-1:-1:-1;;;9674:17:28;;;;;8861:837::o;370:236:21:-;432:9;461:1;457;:5;;;453:147;;;-1:-1:-1;503:2:21;;;;491:15;;-1:-1:-1;;;;;486:25:21;;;;;;;478:40;;;;;-1:-1:-1;;;478:40:21;;;;;;;;;;;;-1:-1:-1;;;478:40:21;;;;;;;;;;;;;;;453:147;;;-1:-1:-1;562:14:21;;;-1:-1:-1;;;;;557:25:21;;;;;;;;549:40;;;;;-1:-1:-1;;;549:40:21;;;;;;;;;;;;-1:-1:-1;;;549:40:21;;;;;;;;;;;;;;4354:4281:30;4427:10;817;-1:-1:-1;;;;;4556:30:30;;;;;;:63;;-1:-1:-1;997:49:30;-1:-1:-1;;;;;4590:29:30;;;4556:63;4548:77;;;;;-1:-1:-1;;;4548:77:30;;;;;;;;;;;;-1:-1:-1;;;4548:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;4676:2:30;4651:27;;;;-1:-1:-1;;;;;4781:41:30;;4778:1;4774:49;4871:9;;;4944:18;4938:25;;4935:1;4931:33;5012:9;;;5085:10;5079:17;;5076:1;5072:25;5145:9;;;5218:6;5212:13;;5209:1;5205:21;5274:9;;;5347:4;5341:11;;5338:1;5334:19;;;5401:9;;;5474:3;5468:10;;5465:1;5461:18;5527:9;;;5594:10;;;-1:-1:-1;5587:18:30;;;5653:9;;;;5713:10;;;4984;;5117;;;5246;;;5373;5499;;;5625;5743;-1:-1:-1;5777:10:30;;5773:79;;5809:3;5803;:9;5793:5;:20;;5789:24;;5773:79;;;5848:3;5842;:9;5832:5;:20;;5828:24;;5773:79;5951:9;;;5946:3;5942:19;;;5983:11;;;;6055:9;;;;6120;;6111:19;;;6152:11;;;6224:9;6289;;6280:19;;;6321:11;;;6393:9;6458;;6449:19;;;6490:11;;;6562:9;6627;;6618:19;;;6659:11;;;6731:9;6796;;6787:19;;;6828:11;;;6900:9;6965;;6956:19;;;6997:11;;;7069:9;7134;;7125:19;;;7166:11;;;7238:9;7303;;7294:19;;;7335:11;;;7407:9;7472;;7463:19;;;7504:11;;;7576:9;7641;;7632:19;;;7673:11;;;7745:9;7810;;7801:19;;;7842:11;;;7914:9;7979;;7970:19;;;8011:11;;;;8083:9;;;;8148;;8139:19;;;;;5951:9;-1:-1:-1;;5879:17:30;;5901:2;5878:25;6026:10;;;;;;;6016:21;6195:10;;;;;;;6185:21;;;;6364:10;;;;;;;6354:21;;;;6533:10;;;;;;;6523:21;;;;6702:10;;;;;;;6692:21;;;;6871:10;;;;;;;6861:21;;;;7040:10;;;;;;;7030:21;7209:10;;;;;-1:-1:-1;;;7209:10:30;7199:21;7378:10;;;;;;;7368:21;7547:10;;;;;;;7537:21;7716:10;;;;;;;7706:21;7885:10;;;;;;;7875:21;8054:10;;;;;;;8044:21;8223:10;;;;;;;8213:21;8285:24;8277:32;;-1:-1:-1;;8361:53:30;;5893:3;8360:62;;;;8471:39;8455:55;;8454:64;;8537:17;;;;;;;;;:91;;-1:-1:-1;;;;;8567:42:30;;:26;8586:6;8567:18;:26::i;:::-;-1:-1:-1;;;;;8567:42:30;;;:61;;8621:7;8567:61;;;8612:6;8567:61;8537:91;;;8557:7;8537:91;8530:98;4354:4281;-1:-1:-1;;;;;;;;;4354:4281:30:o;4432:902:23:-;4672:19;4693:25;4730:23;4756:4;4761:5;4756:11;;;;;;;;;4730:37;;;;;;;;4756:11;;;;4730:37;;;;;;;;-1:-1:-1;;;4730:37:23;;;;;;;;;;-1:-1:-1;4730:37:23;;;-1:-1:-1;;;4730:37:23;;-1:-1:-1;;;;;4730:37:23;;;;;;;;-1:-1:-1;;;4730:37:23;;;;;;;;;;;;;-1:-1:-1;4857:37:23;;;4853:70;;;4904:5;4911:11;4896:27;;;;;;;4853:70;5024:11;5006:29;;:15;:29;;;:59;;;;;5063:1;5049:11;:15;5039:26;;:5;:26;;;5006:59;5002:189;;;5102:15;5081:36;;5002:189;;;5169:11;5148:32;;5002:189;5230:18;5216:32;;5217:5;5225:1;5217:9;5216:32;;;;;;;;5201:47;;5279:48;5289:4;5295:14;5311:4;5317:9;5279;:48::i;:::-;5258:4;5263:12;5258:18;;;;;;;;;:69;;:18;;:69;;;;;;;;;;;;;;;;;-1:-1:-1;;;5258:69:23;-1:-1:-1;;;;;;;;;;5258:69:23;;;-1:-1:-1;;;5258:69:23;;;;;;;;;-1:-1:-1;;;5258:69:23;-1:-1:-1;;5258:69:23;;;;-1:-1:-1;;5258:69:23;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4432:902:23;;;;-1:-1:-1;4432:902:23;-1:-1:-1;;;;;;4432:902:23:o;602:328:31:-;774:66;;;-1:-1:-1;;;;;774:66:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;774:66:31;-1:-1:-1;;;774:66:31;;;763:78;;;;-1:-1:-1;;;;763:10:31;;;;774:66;763:78;;;774:66;763:78;;774:66;763:78;;;;;;;;;;-1:-1:-1;;763:78:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;715:126;;;;859:7;:57;;;;-1:-1:-1;871:11:31;;:16;;:44;;;902:4;891:24;;;;;;;;;;;;;;;-1:-1:-1;891:24:31;871:44;851:72;;;;;-1:-1:-1;;;851:72:31;;;;;;;;;;;;-1:-1:-1;;;851:72:31;;;;;;;;;;;;;;;602:328;;;;;:::o;5356:297:1:-;5483:71;;;5548:4;5483:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5483:71:1;-1:-1:-1;;;5483:71:1;;;5465:90;;;;-1:-1:-1;;;;;;;;;;;5465:6:1;:17;;5483:71;;5465:90;;;;5483:71;5465:90;;5483:71;5465:90;;;;;;;;;;-1:-1:-1;;5465:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5417:138;;;;5573:7;:28;;;;;5599:2;5584:4;:11;:17;;5573:28;5565:37;;;;;;5630:4;5619:27;;;;;;;;;;;;;;;-1:-1:-1;5619:27:1;;-1:-1:-1;;;5356:297:1;:::o;422:111:22:-;514:5;;;509:16;;;;501:25;;;;;5836:297:1;5963:71;;;6028:4;5963:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5963:71:1;-1:-1:-1;;;5963:71:1;;;5945:90;;;;-1:-1:-1;;;;;;;;;;;5945:6:1;:17;;5963:71;;5945:90;;;;5963:71;;5945:90;;;;5963:71;;5945:90;;;;;;;;-1:-1:-1;;5945:90:1;;;;;;;;;;;;5713:549:23;5837:6;5873:1;5863:7;:11;;;5855:25;;;;;-1:-1:-1;;;5855:25:23;;;;;;;;;;;;-1:-1:-1;;;5855:25:23;;;;;;;;;;;;;;;5986:7;5978:15;;:4;:15;;;5974:35;;-1:-1:-1;6002:7:23;5995:14;;5974:35;6184:7;6168:66;6197:4;6193:8;;:1;:8;;;6168:66;;;6233:1;6208:4;6213:1;6208:7;;;;;;;;;;:26;;-1:-1:-1;;6208:26:23;;;;;;;;;;;;-1:-1:-1;6203:3:23;6168:66;;;-1:-1:-1;6251:4:23;;5713:549;-1:-1:-1;;;5713:549:23:o;639:107:25:-;737:1;718:20;;;;;;710:29;;;;;11778:2813:1;11908:30;11952:14;11980;1031:22:3;:20;:22::i;:::-;12019:46:1::1;12030:6;:16;;;12048:6;:16;;;12019:10;:46::i;:::-;12076:27;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;12076:27:1;-1:-1:-1;;;;;12076:27:1;::::1;::::0;;-1:-1:-1;;;12076:27:1;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;12076:27:1;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12076:27:1;::::1;::::0;::::1;::::0;;;;;;;;-1:-1:-1;;;12076:27:1;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;12076:27:1;::::1;::::0;::::1;-1:-1:-1::0;12076:27:1;;;-1:-1:-1;;;12076:27:1;;::::1;::::0;;::::1;;;::::0;;;;12184:12;;12210:16;;::::1;::::0;12240;;::::1;::::0;12270:21;;::::1;::::0;12076:27;;12155:171:::1;::::0;12184:12;;12210:16;;12240;;12270:21;12155:15:::1;:171::i;:::-;12144:182;;12341:6;:21;;;:26;;12366:1;12341:26;12337:2248;;12401:6;:16;;;12387:30;;:6;:11;;;:30;;;12383:2192;;;12676:224;12727:45;12755:6;:16;;;12727:27;:45::i;:::-;12794;12822:6;:16;;;12794:27;:45::i;:::-;12861:6;:21;;;12676:29;:224::i;:::-;12666:234;;12383:2192;;;12939:6;:16;;;12925:30;;:6;:11;;;:30;;;12921:1654;;;13060:9;::::0;13256:23:::1;::::0;::::1;::::0;-1:-1:-1;;;;;13060:9:1;;::::1;::::0;13216:296:::1;::::0;13301:17:::1;:15;:17::i;:::-;13340:11;::::0;::::1;::::0;13410:29:::1;::::0;::::1;::::0;13461:33:::1;::::0;::::1;::::0;13216:12:::1;::::0;:296;;13340:11;13373:15;;13216:18:::1;:296::i;:::-;13160:5;13159:353:::0;;-1:-1:-1;;;;13159:353:1::1;-1:-1:-1::0;;;;13159:353:1;;::::1;;;-1:-1:-1::0;;;;13159:353:1::1;-1:-1:-1::0;;;13159:353:1;;;::::1;::::0;;;::::1;;::::0;;13592:19;;13661:16:::1;::::0;::::1;::::0;13541:198:::1;::::0;13592:19;13633:45:::1;::::0;:27:::1;:45::i;:::-;13700:6;:21;;;13541:29;:198::i;:::-;13531:208;;13767:198;13818:45;13846:6;:16;;;13818:27;:45::i;:::-;13885:19:::0;;13926:21:::1;::::0;::::1;::::0;13767:29:::1;:198::i;:::-;13757:208;;13996:62;14019:15;14036:6;:21;;;13996:22;:62::i;:::-;13984:9;:74:::0;;-1:-1:-1;;;;;;13984:74:1::1;-1:-1:-1::0;;;;;13984:74:1;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;12921:1654:1::1;;;14336:224;14387:45;14415:6;:16;;;14387:27;:45::i;:::-;14454;14482:6;:16;;;14454:27;:45::i;:::-;14521:6;:21;;;14336:29;:224::i;:::-;14326:234;;12921:1654;1063:1:3;11778:2813:1::0;;;;;:::o;4800:315:20:-;4922:14;4957:25;4964:1;4967;4970:11;4957:6;:25::i;:::-;4948:34;;5024:1;5009:11;4996:25;;;;;5006:1;5003;4996:25;:29;4992:117;;;-1:-1:-1;;5049:26:20;;5041:35;;;;;;5090:8;;4800:315;;;;;:::o;1246:284:24:-;1476:45;;;;;;;;-1:-1:-1;;1476:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:56;;;;;;;;;-1:-1:-1;1461:62:24;;;;;;;;;1246:284::o;15543:862:23:-;15785:30;15817:51;15902:1;15888:11;:15;;;15880:29;;;;;-1:-1:-1;;;15880:29:23;;;;;;;;;;;;-1:-1:-1;;;15880:29:23;;;;;;;;;;;;;;;15950:11;:18;15938:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15938:31:23;;15920:49;;16030:11;:18;16016:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16016:33:23;;15979:70;;16064:9;16059:340;16083:11;:18;16079:1;:22;16059:340;;;16184:204;16215:4;16237;16259:11;16271:1;16259:14;;;;;;;;;;;;;;16291:4;16313:5;16336:9;16363:11;16184:13;:204::i;:::-;16123:15;16139:1;16123:18;;;;;;;;;;;;;16143:34;16178:1;16143:37;;;;;;;;-1:-1:-1;;;;;16122:266:23;;;16143:37;;;;;;;;;;;16122:266;;;;;;;;;;;;;-1:-1:-1;16103:3:23;16059:340;;;;15543:862;;;;;;;;;;:::o;4681:233:1:-;4778:9;4766:21;;:9;:21;;;4758:37;;;;;-1:-1:-1;;;4758:37:1;;;;;;;;;;;;-1:-1:-1;;;4758:37:1;;;;;;;;;;;;;;;-1:-1:-1;;4813:30:1;;;;;;4805:46;;;;;-1:-1:-1;;;4805:46:1;;;;;;;;;;;;-1:-1:-1;;;4805:46:1;;;;;;;;;;;;;;;637:9:30;4869:30:1;;;;;;4861:46;;;;;-1:-1:-1;;;4861:46:1;;;;;;;;;;;;-1:-1:-1;;;4861:46:1;;;;;;;;;;;;;;;4681:233;;:::o;2888:367:23:-;3056:169;;;;;;;;;;;;;;;-1:-1:-1;3056:169:23;;;;;;;;;;;;;3210:4;3056:169;;;;;;;3046:179;;-1:-1:-1;;3046:179:23;;;;;;;-1:-1:-1;;;3046:179:23;;;;3210:4;;;2888:367::o;686:160:29:-;793:9;;801:1;793:9;;;;835:3;828:10;;;;686:160::o;658:731:17:-;720:7;751:1;747;:5;739:14;;;;;;-1:-1:-1;;;768:40:17;;764:102;;830:3;824:9;;;;847:8;764:102;884:19;879:1;:24;875:84;;925:2;919:8;;;;941:7;875:84;-1:-1:-1;;;972:16:17;;968:76;;1010:2;1004:8;;;;1026:7;968:76;1062:7;1057:1;:12;1053:72;;1091:2;1085:8;;;;1107:7;1053:72;1143:5;1138:1;:10;1134:68;;1170:1;1164:7;;;;1185:6;1134:68;1220:4;1215:1;:9;1211:67;;1246:1;1240:7;;;;1261:6;1211:67;1296:3;1291:1;:8;1287:66;;1321:1;1315:7;;;;1336:6;1287:66;1371:3;1366:1;:8;1362:20;;1381:1;1376:6;658:731;;;:::o;1880:894::-;1943:7;1974:1;1970;:5;1962:14;;;;;;-1:-1:-1;1991:3:17;-1:-1:-1;;;;;2008:21:17;;:25;2004:104;;-1:-1:-1;;2049:8:17;2004:104;;;2094:3;2088:9;;;;;2004:104;2125:16;2121:20;;:24;2117:101;;-1:-1:-1;;2161:7:17;2117:101;;;2205:2;2199:8;;;;;2117:101;2235:16;2231:20;;:24;2227:101;;-1:-1:-1;;2271:7:17;2227:101;;;2315:2;2309:8;;;;;2227:101;2345:16;2341:20;;:24;2337:101;;-1:-1:-1;;2381:7:17;2337:101;;;2425:2;2419:8;;;;;2337:101;2455:15;2451:19;;:23;2447:98;;-1:-1:-1;;2490:6:17;2447:98;;;2533:1;2527:7;;;;;2447:98;2562:3;2558:7;;:11;2554:86;;-1:-1:-1;;2585:6:17;2554:86;;;2628:1;2622:7;;;;;2554:86;2657:3;2653:7;;:11;2649:86;;-1:-1:-1;;2680:6:17;2649:86;;;2723:1;2717:7;;;;;2649:86;2752:3;2748:7;;:11;2744:23;;-1:-1:-1;;2761:6:17;;1880:894;-1:-1:-1;1880:894:17:o;8727:532:26:-;8892:15;-1:-1:-1;;;;;8923:29:26;;;;;;;8919:98;;;8988:13;;9003;8919:98;9047:7;:205;;9177:75;-1:-1:-1;;;;;9177:75:26;;-1:-1:-1;;;;;9204:29:26;;;9177:75;-1:-1:-1;;;9177:15:26;:75::i;:::-;9047:205;;;9073:85;-1:-1:-1;;;;;9073:85:26;;-1:-1:-1;;;;;9110:29:26;;;9073:85;-1:-1:-1;;;9073:25:26;:85::i;:::-;9028:224;;8727:532;;;;;;;:::o;7493:779::-;7658:15;-1:-1:-1;;;;;7689:29:26;;;;;;;7685:98;;;7754:13;;7769;7685:98;-1:-1:-1;;;;;;;;7815:45:26;;;;-1:-1:-1;;;;;7891:29:26;;;7870:50;;;7939:17;;7931:26;;;;;;7987:7;:278;;-1:-1:-1;;;;;8195:70:26;;;;:54;;8211:10;;8223;;8195:54;;:15;:54::i;:::-;:70;;;;;;7987:278;;;8013:163;8059:64;8085:10;8097;-1:-1:-1;;;;;8059:64:26;;:25;:64::i;:::-;-1:-1:-1;;;;;8013:163:26;;:24;:163::i;:::-;7968:297;7493:779;-1:-1:-1;;;;;;;7493:779:26:o;5299:550::-;5467:16;-1:-1:-1;;;;;5503:12:26;;5495:21;;;;;;-1:-1:-1;;;;;5534:13:26;;5526:22;;;;;;5644:10;:198;;5766:76;5806:8;5816:9;5827:8;5837:4;5766:39;:76::i;5644:198::-;5673:74;5711:8;5721:9;5732:8;5742:4;5673:37;:74::i;6395:550::-;6565:16;-1:-1:-1;;;;;6601:12:26;;6593:21;;;;;;-1:-1:-1;;;;;6632:13:26;;6624:22;;;;;;6736:10;:202;;6862:76;6900:8;6910:9;6921;6932:5;6862:37;:76::i;6736:202::-;6765:78;6805:8;6815:9;6826;6837:5;6765:39;:78::i;1804:633:23:-;1962:18;;:::i;:::-;1992:12;2024:4;:19;;;2007:14;:36;1992:51;;2072:358;;;;;;;;2118:14;2072:358;;;;;;2202:5;2188:19;;2194:4;2188:11;;:19;2166:4;:19;;;:41;2072:358;;;;;;2361:1;2349:9;-1:-1:-1;;;;;2349:13:23;;:29;;2377:1;2349:29;;;2365:9;2349:29;-1:-1:-1;;;;;2322:57:23;-1:-1:-1;2323:21:23;;;-1:-1:-1;;;2323:21:23;2322:57;;;;;;2260:4;:38;;;:120;-1:-1:-1;;;;;2072:358:23;;;;;2411:4;2072:358;;;;;2053:377;;;1804:633;;;;;;:::o;10110:1425::-;10356:29;;:::i;:::-;10387:28;;:::i;:::-;10503:4;10508:5;10503:11;;;;;;;;;10490:24;;;;;;;;10503:11;;;;10490:24;;;;;;;-1:-1:-1;;;10490:24:23;;;;;;;;;;-1:-1:-1;10490:24:23;;;-1:-1:-1;;;10490:24:23;;-1:-1:-1;;;;;10490:24:23;;;;;;;;-1:-1:-1;;;10490:24:23;;;;;;;;;;;-1:-1:-1;10629:44:23;;10633:4;;10666:6;10629:3;:44::i;:::-;10625:443;;;10722:6;10693:35;;:10;:25;;;:35;;;10689:369;;;10856:30;;10689:369;10984:10;10996:46;11006:10;11018:6;11026:4;11032:9;10996;:46::i;:::-;10976:67;;;;;;10689:369;11144:4;11163:11;11149:25;;11150:5;11158:1;11150:9;11149:25;;;;;;;;11144:31;;;;;;;;;11131:44;;;;;;;;11144:31;;;;11131:44;;;;;;-1:-1:-1;;;11131:44:23;;;;;;;;;;-1:-1:-1;11131:44:23;;;-1:-1:-1;;;11131:44:23;;-1:-1:-1;;;;;11131:44:23;;;;;;;;-1:-1:-1;;;11131:44:23;;;;;;;;;;;;;;;-1:-1:-1;11185:49:23;;11214:20;;;;;;;;;;;;;;;-1:-1:-1;;;11214:20:23;;;;;;;;;;-1:-1:-1;11214:20:23;;;-1:-1:-1;;;11214:20:23;;-1:-1:-1;;;;;11214:20:23;;;;;;;;-1:-1:-1;;;11214:20:23;;;;;;;;;;;;-1:-1:-1;11185:49:23;11341:44;11345:4;11351:10;:25;;;11378:6;11341:3;:44::i;:::-;11333:60;;;;;-1:-1:-1;;;11333:60:23;;;;;;;;;;;;-1:-1:-1;;;11333:60:23;;;;;;;;;;;;;;;11476:52;11489:4;11495;11501:6;11509:5;11516:11;11476:12;:52::i;:::-;11469:59;;;;10110:1425;;;;;;;;;;:::o;14915:2517:1:-;15087:30;15140:42;:9;15154:5;15161:9;15172;15140:13;:42::i;:::-;15225:20;;15317;;15129:53;;-1:-1:-1;15225:20:1;15193:29;;15485:19;;;;;15481:1402;;15520:11;15534:17;:15;:17::i;:::-;15566:20;15746:10;;15822:9;;15520:31;;-1:-1:-1;15566:20:1;;;;15649:250;;:12;;15520:31;;15566:20;;-1:-1:-1;;;15746:10:1;;;;;15778:22;-1:-1:-1;;;15778:22:1;;;;;-1:-1:-1;;;;;15822:9:1;;;;-1:-1:-1;;;15853:28:1;;;15649:26;:250::i;:::-;15565:334;;-1:-1:-1;15565:334:1;-1:-1:-1;15929:350:1;:5;15959:9;15986:4;16008:14;16040:21;16079;15565:334;;16201:4;16223:5;16246:19;15929:12;:350::i;:::-;15914:365;-1:-1:-1;16308:349:1;:5;16338:9;16365:4;16387:14;16419:21;16458;16497:33;16548:14;16580:4;16602;16624:19;16308:12;:349::i;:::-;16293:364;;16676:12;16672:94;;;16708:43;:10;16728:9;16739:11;16708:19;:43::i;:::-;16783:12;16779:94;;;16815:43;:10;16835:9;16846:11;16815:19;:43::i;:::-;15481:1402;;;;16894:28;;16968:98;:5;16993:9;17004;17015:4;17021:21;17044;16968:24;:98::i;:::-;16893:173;;-1:-1:-1;16893:173:1;-1:-1:-1;17077:75:1;:8;17093:14;16893:173;;17077:15;:75::i;:::-;17240:1;17223:14;:18;;;17219:207;;;17261:12;17257:73;;;17293:22;:5;17305:9;17293:11;:22::i;:::-;17347:12;17343:73;;;17379:22;:5;17391:9;17379:11;:22::i;:::-;14915:2517;;;;;;;;;;;;;:::o;9603:412:26:-;9745:14;9802:1;9790:9;:13;;;:218;;9926:82;:71;9942:13;9957;9980:9;9992:4;9926:15;:71::i;:::-;:80;:82::i;:::-;9790:218;;;9823:84;:73;9839:13;9854;9878:9;9877:10;;9890:5;9823:15;:73::i;:84::-;9822:85;;9771:237;9603:412;-1:-1:-1;;;;9603:412:26:o;10359:::-;10501:14;10558:1;10546:9;:13;;;:218;;10682:82;:71;10698:13;10713;10736:9;10748:4;10682:15;:71::i;10546:218::-;10579:84;:73;10595:13;10610;10634:9;10633:10;;10646:5;10579:15;:73::i;492:165:32:-;613:9;;;627;;624:16;;609:32;;590:61::o;3597:1153:26:-;3770:7;3947:3;3943:801;;;3966:16;-1:-1:-1;;;;;4023:27:26;;;:180;;4151:52;4167:6;-1:-1:-1;;;;;;;;4151:52:26;;:15;:52::i;:::-;4023:180;;;-1:-1:-1;;;;;4077:47:26;;296:2:19;4078:33:26;;;4077:47;;;;;;4023:180;3966:255;-1:-1:-1;4243:43:26;:31;-1:-1:-1;;;;;4243:17:26;;3966:255;4243:21;:31::i;:::-;:41;:43::i;:::-;4236:50;;;;;3943:801;4317:16;-1:-1:-1;;;;;4374:27:26;;;:213;;4525:62;4551:6;-1:-1:-1;;;;;;;;4525:62:26;;:25;:62::i;:::-;4374:213;;;4428:70;296:2:19;4453:33:26;;;-1:-1:-1;;;;;4428:70:26;;:24;:70::i;:::-;4317:288;-1:-1:-1;;;;;;4628:19:26;;;-1:-1:-1;4620:28:26;;;;;;-1:-1:-1;;;;;4713:19:26;;;;-1:-1:-1;4698:35:26;;1405:1366;1576:7;1711:11;1707:32;;-1:-1:-1;1731:8:26;1724:15;;1707:32;-1:-1:-1;1770:45:26;;;-1:-1:-1;;;;;;;1770:45:26;1826:939;;;;-1:-1:-1;;;;;1882:50:26;;1893:17;;;;;;;1882:38;;;;;:50;1878:323;;;1974:20;;;2016:25;;;2012:174;;2125:60;2151:10;-1:-1:-1;;;;;2125:60:26;;2173:11;2125:25;:60::i;:::-;2110:76;;;;;;;2012:174;1878:323;;2230:73;2255:10;2267:35;2295:6;-1:-1:-1;;;;;2268:21:26;;2255:10;2268:21;;;;;;;2267:27;:35::i;:::-;2230:24;:73::i;:::-;2215:89;;;;;;1826:939;-1:-1:-1;;;;;2530:50:26;;2541:17;;;;;;;2530:38;;;;;:50;:74;;;;;2597:7;2584:10;:20;2530:74;2522:83;;;;;;2641:20;;;2682:72;:60;2641:20;-1:-1:-1;;;;;2682:60:26;;2641:20;2682:25;:60::i;6696:371:23:-;6794:4;6879;6874:9;;:1;:9;;;;:22;;;;;6892:4;6887:9;;:1;:9;;;;6874:22;6870:41;;;6910:1;6905:6;;:1;:6;;;;6898:13;;;;6870:41;6922:17;6946:4;6942:8;;:1;:8;;;:24;;-1:-1:-1;;;6957:9:23;;;;6942:24;;;6953:1;6942:24;;;6922:44;;;;6976:17;7000:4;6996:8;;:1;:8;;;:24;;-1:-1:-1;;;7011:9:23;;;;6996:24;;;7007:1;6996:24;;;6976:44;;7038:22;;;;;6696:371;-1:-1:-1;;;;;6696:371:23:o;8022:1064::-;8207:29;;:::i;:::-;8238:28;;:::i;:::-;8278:9;8304:11;8290:25;;8291:5;8299:1;8291:9;8290:25;;;;;;;;8278:37;;;;8347:9;8377:1;8363:11;8359:15;;:1;:15;:19;8347:31;;8410:9;8429:651;-1:-1:-1;8470:1:23;8461:5;;;8460:11;8499:4;8504:15;;;8460:11;8504:15;;;;;;8499:21;;;;;;;8486:34;;;;;;;;8499:21;;;;8486:34;;;;;;-1:-1:-1;;;8486:34:23;;;;;;;;;;-1:-1:-1;8486:34:23;;;-1:-1:-1;;;8486:34:23;;-1:-1:-1;;;;;8486:34:23;;;;;;;;-1:-1:-1;;;8486:34:23;;;;;;;;;;;;;;;-1:-1:-1;8627:97:23;;8678:1;8682;8678:5;8674:9;;8701:8;;8627:97;8750:4;8765:11;8755:21;;8756:1;8760;8756:5;8755:21;;;;;;8750:27;;;;;;;8738:39;;;;;;;;8750:27;;;;8738:39;;;;;;-1:-1:-1;;;8738:39:23;;;;;;;;;;-1:-1:-1;8738:39:23;;;-1:-1:-1;;;8738:39:23;;-1:-1:-1;;;;;8738:39:23;;;;;;;;-1:-1:-1;;;8738:39:23;;;;;;;;;;;8825:25;;8738:39;;-1:-1:-1;;;8815:44:23;;8819:4;;8852:6;8815:3;:44::i;:::-;8792:67;;8926:15;:62;;;;;8945:43;8949:4;8955:6;8963:9;:24;;;8945:3;:43::i;:::-;8922:73;;;8990:5;;;8922:73;9015:15;9010:59;;9040:1;9036;:5;9032:9;;9010:59;;;9064:1;9068;9064:5;9060:9;;9010:59;8429:651;;;;8022:1064;;;;;;;;;;;:::o;6101:1689:28:-;6546:10;;;;;;6497:12;6546:10;;;;;;;;;;6598:19;;-1:-1:-1;;;;;6598:19:28;6497:12;6657:60;6598:19;6702:14;6657:22;:60::i;:::-;6627:90;-1:-1:-1;;;;;;6736:35:28;;;;;;;;6728:50;;;;;-1:-1:-1;;;6728:50:28;;;;;;;;;;;;-1:-1:-1;;;6728:50:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;6830:25:28;;;;6800:24;;;;6799:57;;;;-1:-1:-1;6799:57:28;6867:572;;7036:11;7028:19;;:4;:19;;;7024:368;;7067:26;;;:49;;;7134:26;;;:49;;;7201:35;;;:71;;-1:-1:-1;;;;;;;;7201:71:28;-1:-1:-1;;;;;;;;7201:71:28;;;;-1:-1:-1;;7290:43:28;-1:-1:-1;7290:43:28;;;;;;-1:-1:-1;;;;7351:26:28;-1:-1:-1;;;;7351:26:28;;;;;;7024:368;7405:16;;;:23;;-1:-1:-1;;;;;7405:23:28;-1:-1:-1;;;7405:23:28;;;6867:572;7449:41;;-1:-1:-1;;;;;;7449:41:28;-1:-1:-1;;;;;7449:41:28;;;;;7636:5;:147;;7734:17;;7727:56;;:45;;-1:-1:-1;;;7734:17:28;;7727:45;7734:17;;;7727:25;;;:45;;;:29;:45::i;:::-;:54;:56::i;:::-;7636:147;;;7663:17;;7656:56;;:45;;-1:-1:-1;;;7663:17:28;;7656:45;7663:17;;;7656:25;;;:45;;;:29;:45::i;:56::-;7616:167;;-1:-1:-1;;;;;7616:167:28;;;;;;;;;-1:-1:-1;;;7616:167:28;;;;;-1:-1:-1;6101:1689:28;;;-1:-1:-1;;;;;;;;;;;;6101:1689:28:o;1102:348:29:-;1255:11;1248:18;;:4;:18;;;;;;;;:23;;;1240:32;;;;;;1317:13;1332:12;1348:28;1364:11;1357:18;;:4;:18;;;;;;;;1348:8;:28::i;:::-;1401:1;1422:13;;;;;1386:12;1422:13;;;;;;;;;;;;:21;;1401:11;;;;;;;;1422:21;;;;;;-1:-1:-1;;;;1102:348:29:o;3335:1569:28:-;3686:15;;;;;;;3595:28;3686:15;;;;;;;;;;;3732;;;;;;;;;;3595:28;;;;3686:15;;3732;3595:28;;;;3874:24;;;;;3870:356;;-1:-1:-1;;3936:27:28;;;;3999;;;;3870:356;;;4102:5;:27;;;4079:20;:50;4057:72;;4188:5;:27;;;4165:20;:50;4143:72;;3870:356;4274:27;4311;4366:9;4352:23;;:11;:23;;;4348:355;;;-1:-1:-1;;4413:27:28;;;;4476;;;;4348:355;;;4579:5;:27;;;4556:20;:50;4534:72;;4665:5;:27;;;4642:20;:50;4620:72;;4348:355;4736:42;;;;:64;;;;;4833:42;;;;:64;;;;;-1:-1:-1;3335:1569:28;;-1:-1:-1;;;;;;;3335:1569:28:o;2010:1562:24:-;2185:24;;;;;;;;;;-1:-1:-1;;;;;2185:24:24;;;;;-1:-1:-1;2185:24:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2185:24:24;;;;;-1:-1:-1;2185:24:24;;;-1:-1:-1;2255:19:24;;;;2251:275;;2298:15;;-1:-1:-1;;;;;2298:19:24;2290:34;;;;;-1:-1:-1;;;2290:34:24;;;;;;;;;;;;-1:-1:-1;;;2290:34:24;;;;;;;;;;;;;;;-1:-1:-1;2398:15:24;;2251:275;;;2483:15;;2460:55;;2500:14;2460:22;:55::i;:::-;2444:71;;2251:275;2693:30;;;;2745:15;;2574:19;;2633:185;;2670:53;;;;-1:-1:-1;;;;;2633:185:24;-1:-1:-1;;;2633:15:24;:185::i;:::-;2961:30;;;;3013:15;;2574:258;;-1:-1:-1;2842:19:24;;2901:185;;2938:53;;;-1:-1:-1;;;;;2901:185:24;-1:-1:-1;;;2901:15:24;:185::i;:::-;2842:258;;3146:14;:19;;3164:1;3146:19;3142:55;;3167:30;;-1:-1:-1;;;;;;3167:30:24;-1:-1:-1;;;;;3167:30:24;;;;;3142:55;3207:29;;;:52;;;3269:29;;;:52;;;-1:-1:-1;;;;;3335:15:24;;;;;:34;;-1:-1:-1;;;;;;3354:15:24;;;;3335:34;3331:235;;;3479:16;;;:31;;-1:-1:-1;;;;;;3479:31:24;;-1:-1:-1;;;;;3479:31:24;;;;;;;;3524;;;-1:-1:-1;;;3524:31:24;;;;;;;;;;;;;;;3331:235;2010:1562;;;;;;;;:::o;7977:112:28:-;8072:10;;;;;;;;;;;;;;;;;;8065:17;;;;;;;;;;;;;;;;;;7977:112::o;344:111:25:-;446:1;-1:-1:-1;;;;;426:21:25;;;;418:30;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity =0.7.6;\n\nimport './interfaces/IMoonwalkerPool.sol';\nimport './NoDelegateCall.sol';\nimport './libraries/LowGasSafeMath.sol';\nimport './libraries/SafeCast.sol';\nimport './libraries/Tick.sol';\nimport './libraries/TickBitmap.sol';\nimport './libraries/Position.sol';\nimport './libraries/Oracle.sol';\nimport './libraries/FullMath.sol';\nimport './libraries/FixedPoint128.sol';\nimport './libraries/TransferHelper.sol';\nimport './libraries/TickMath.sol';\nimport './libraries/LiquidityMath.sol';\nimport './libraries/SqrtPriceMath.sol';\nimport './libraries/SwapMath.sol';\nimport './interfaces/IMoonwalkerPoolDeployer.sol';\nimport './interfaces/IMoonwalkerFactory.sol';\nimport './interfaces/IERC20Minimal.sol';\nimport './interfaces/callback/IMoonwalkerMintCallback.sol';\nimport './interfaces/callback/IMoonwalkerSwapCallback.sol';\nimport './interfaces/callback/IMoonwalkerFlashCallback.sol';\n\ncontract MoonwalkerPool is IMoonwalkerPool, NoDelegateCall {\n    using LowGasSafeMath for uint256;\n    using LowGasSafeMath for int256;\n    using SafeCast for uint256;\n    using SafeCast for int256;\n    using Tick for mapping(int24 => Tick.Info);\n    using TickBitmap for mapping(int16 => uint256);\n    using Position for mapping(bytes32 => Position.Info);\n    using Position for Position.Info;\n    using Oracle for Oracle.Observation[65535];\n\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    address public immutable override factory;\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    address public immutable override token0;\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    address public immutable override token1;\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    uint24 public immutable override fee;\n\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    int24 public immutable override tickSpacing;\n\n    /// @inheritdoc IMoonwalkerPoolImmutables\n    uint128 public immutable override maxLiquidityPerTick;\n\n    struct Slot0 {\n        // the current price\n        uint160 sqrtPriceX96;\n        // the current tick\n        int24 tick;\n        // the most-recently updated index of the observations array\n        uint16 observationIndex;\n        // the current maximum number of observations that are being stored\n        uint16 observationCardinality;\n        // the next maximum number of observations to store, triggered in observations.write\n        uint16 observationCardinalityNext;\n        // the current protocol fee as a percentage of the swap fee taken on withdrawal\n        // represented as an integer denominator (1/x)%\n        uint8 feeProtocol;\n        // whether the pool is locked\n        bool unlocked;\n    }\n    /// @inheritdoc IMoonwalkerPoolState\n    Slot0 public override slot0;\n\n    /// @inheritdoc IMoonwalkerPoolState\n    uint256 public override feeGrowthGlobal0X128;\n    /// @inheritdoc IMoonwalkerPoolState\n    uint256 public override feeGrowthGlobal1X128;\n\n    // accumulated protocol fees in token0/token1 units\n    struct ProtocolFees {\n        uint128 token0;\n        uint128 token1;\n    }\n    /// @inheritdoc IMoonwalkerPoolState\n    ProtocolFees public override protocolFees;\n\n    /// @inheritdoc IMoonwalkerPoolState\n    uint128 public override liquidity;\n\n    /// @inheritdoc IMoonwalkerPoolState\n    mapping(int24 => Tick.Info) public override ticks;\n    /// @inheritdoc IMoonwalkerPoolState\n    mapping(int16 => uint256) public override tickBitmap;\n    /// @inheritdoc IMoonwalkerPoolState\n    mapping(bytes32 => Position.Info) public override positions;\n    /// @inheritdoc IMoonwalkerPoolState\n    Oracle.Observation[65535] public override observations;\n\n    /// @dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n    /// to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n    /// we use balance checks to determine the payment status of interactions such as mint, swap and flash.\n    modifier lock() {\n        require(slot0.unlocked, 'LOK');\n        slot0.unlocked = false;\n        _;\n        slot0.unlocked = true;\n    }\n\n    /// @dev Prevents calling a function from anyone except the address returned by IMoonwalkerFactory#owner()\n    modifier onlyFactoryOwner() {\n        require(msg.sender == IMoonwalkerFactory(factory).owner());\n        _;\n    }\n\n    constructor() {\n        int24 _tickSpacing;\n        (factory, token0, token1, fee, _tickSpacing) = IMoonwalkerPoolDeployer(msg.sender).parameters();\n        tickSpacing = _tickSpacing;\n\n        maxLiquidityPerTick = Tick.tickSpacingToMaxLiquidityPerTick(_tickSpacing);\n    }\n\n    /// @dev Common checks for valid tick inputs.\n    function checkTicks(int24 tickLower, int24 tickUpper) private pure {\n        require(tickLower < tickUpper, 'TLU');\n        require(tickLower >= TickMath.MIN_TICK, 'TLM');\n        require(tickUpper <= TickMath.MAX_TICK, 'TUM');\n    }\n\n    /// @dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests.\n    function _blockTimestamp() internal view virtual returns (uint32) {\n        return uint32(block.timestamp); // truncation is desired\n    }\n\n    /// @dev Get the pool's balance of token0\n    /// @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n    /// check\n    function balance0() private view returns (uint256) {\n        (bool success, bytes memory data) =\n            token0.staticcall(abi.encodeWithSelector(IERC20Minimal.balanceOf.selector, address(this)));\n        require(success && data.length >= 32);\n        return abi.decode(data, (uint256));\n    }\n\n    /// @dev Get the pool's balance of token1\n    /// @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n    /// check\n    function balance1() private view returns (uint256) {\n        (bool success, bytes memory data) =\n            token1.staticcall(abi.encodeWithSelector(IERC20Minimal.balanceOf.selector, address(this)));\n        require(success && data.length >= 32);\n        return abi.decode(data, (uint256));\n    }\n\n    /// @inheritdoc IMoonwalkerPoolDerivedState\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\n        external\n        view\n        override\n        noDelegateCall\n        returns (\n            int56 tickCumulativeInside,\n            uint160 secondsPerLiquidityInsideX128,\n            uint32 secondsInside\n        )\n    {\n        checkTicks(tickLower, tickUpper);\n\n        int56 tickCumulativeLower;\n        int56 tickCumulativeUpper;\n        uint160 secondsPerLiquidityOutsideLowerX128;\n        uint160 secondsPerLiquidityOutsideUpperX128;\n        uint32 secondsOutsideLower;\n        uint32 secondsOutsideUpper;\n\n        {\n            Tick.Info storage lower = ticks[tickLower];\n            Tick.Info storage upper = ticks[tickUpper];\n            bool initializedLower;\n            (tickCumulativeLower, secondsPerLiquidityOutsideLowerX128, secondsOutsideLower, initializedLower) = (\n                lower.tickCumulativeOutside,\n                lower.secondsPerLiquidityOutsideX128,\n                lower.secondsOutside,\n                lower.initialized\n            );\n            require(initializedLower);\n\n            bool initializedUpper;\n            (tickCumulativeUpper, secondsPerLiquidityOutsideUpperX128, secondsOutsideUpper, initializedUpper) = (\n                upper.tickCumulativeOutside,\n                upper.secondsPerLiquidityOutsideX128,\n                upper.secondsOutside,\n                upper.initialized\n            );\n            require(initializedUpper);\n        }\n\n        Slot0 memory _slot0 = slot0;\n\n        if (_slot0.tick < tickLower) {\n            return (\n                tickCumulativeLower - tickCumulativeUpper,\n                secondsPerLiquidityOutsideLowerX128 - secondsPerLiquidityOutsideUpperX128,\n                secondsOutsideLower - secondsOutsideUpper\n            );\n        } else if (_slot0.tick < tickUpper) {\n            uint32 time = _blockTimestamp();\n            (int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128) =\n                observations.observeSingle(\n                    time,\n                    0,\n                    _slot0.tick,\n                    _slot0.observationIndex,\n                    liquidity,\n                    _slot0.observationCardinality\n                );\n            return (\n                tickCumulative - tickCumulativeLower - tickCumulativeUpper,\n                secondsPerLiquidityCumulativeX128 -\n                    secondsPerLiquidityOutsideLowerX128 -\n                    secondsPerLiquidityOutsideUpperX128,\n                time - secondsOutsideLower - secondsOutsideUpper\n            );\n        } else {\n            return (\n                tickCumulativeUpper - tickCumulativeLower,\n                secondsPerLiquidityOutsideUpperX128 - secondsPerLiquidityOutsideLowerX128,\n                secondsOutsideUpper - secondsOutsideLower\n            );\n        }\n    }\n\n    /// @inheritdoc IMoonwalkerPoolDerivedState\n    function observe(uint32[] calldata secondsAgos)\n        external\n        view\n        override\n        noDelegateCall\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s)\n    {\n        return\n            observations.observe(\n                _blockTimestamp(),\n                secondsAgos,\n                slot0.tick,\n                slot0.observationIndex,\n                liquidity,\n                slot0.observationCardinality\n            );\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext)\n        external\n        override\n        lock\n        noDelegateCall\n    {\n        uint16 observationCardinalityNextOld = slot0.observationCardinalityNext; // for the event\n        uint16 observationCardinalityNextNew =\n            observations.grow(observationCardinalityNextOld, observationCardinalityNext);\n        slot0.observationCardinalityNext = observationCardinalityNextNew;\n        if (observationCardinalityNextOld != observationCardinalityNextNew)\n            emit IncreaseObservationCardinalityNext(observationCardinalityNextOld, observationCardinalityNextNew);\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    /// @dev not locked because it initializes unlocked\n    function initialize(uint160 sqrtPriceX96) external override {\n        require(slot0.sqrtPriceX96 == 0, 'AI');\n\n        int24 tick = TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n\n        (uint16 cardinality, uint16 cardinalityNext) = observations.initialize(_blockTimestamp());\n\n        slot0 = Slot0({\n            sqrtPriceX96: sqrtPriceX96,\n            tick: tick,\n            observationIndex: 0,\n            observationCardinality: cardinality,\n            observationCardinalityNext: cardinalityNext,\n            feeProtocol: 0,\n            unlocked: true\n        });\n\n        emit Initialize(sqrtPriceX96, tick);\n    }\n\n    struct ModifyPositionParams {\n        // the address that owns the position\n        address owner;\n        // the lower and upper tick of the position\n        int24 tickLower;\n        int24 tickUpper;\n        // any change in liquidity\n        int128 liquidityDelta;\n    }\n\n    /// @dev Effect some changes to a position\n    /// @param params the position details and the change to the position's liquidity to effect\n    /// @return position a storage pointer referencing the position with the given owner and tick range\n    /// @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n    /// @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient\n    function _modifyPosition(ModifyPositionParams memory params)\n        private\n        noDelegateCall\n        returns (\n            Position.Info storage position,\n            int256 amount0,\n            int256 amount1\n        )\n    {\n        checkTicks(params.tickLower, params.tickUpper);\n\n        Slot0 memory _slot0 = slot0; // SLOAD for gas optimization\n\n        position = _updatePosition(\n            params.owner,\n            params.tickLower,\n            params.tickUpper,\n            params.liquidityDelta,\n            _slot0.tick\n        );\n\n        if (params.liquidityDelta != 0) {\n            if (_slot0.tick < params.tickLower) {\n                // current tick is below the passed range; liquidity can only become in range by crossing from left to\n                // right, when we'll need _more_ token0 (it's becoming more valuable) so user must provide it\n                amount0 = SqrtPriceMath.getAmount0Delta(\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\n                    params.liquidityDelta\n                );\n            } else if (_slot0.tick < params.tickUpper) {\n                // current tick is inside the passed range\n                uint128 liquidityBefore = liquidity; // SLOAD for gas optimization\n\n                // write an oracle entry\n                (slot0.observationIndex, slot0.observationCardinality) = observations.write(\n                    _slot0.observationIndex,\n                    _blockTimestamp(),\n                    _slot0.tick,\n                    liquidityBefore,\n                    _slot0.observationCardinality,\n                    _slot0.observationCardinalityNext\n                );\n\n                amount0 = SqrtPriceMath.getAmount0Delta(\n                    _slot0.sqrtPriceX96,\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\n                    params.liquidityDelta\n                );\n                amount1 = SqrtPriceMath.getAmount1Delta(\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\n                    _slot0.sqrtPriceX96,\n                    params.liquidityDelta\n                );\n\n                liquidity = LiquidityMath.addDelta(liquidityBefore, params.liquidityDelta);\n            } else {\n                // current tick is above the passed range; liquidity can only become in range by crossing from right to\n                // left, when we'll need _more_ token1 (it's becoming more valuable) so user must provide it\n                amount1 = SqrtPriceMath.getAmount1Delta(\n                    TickMath.getSqrtRatioAtTick(params.tickLower),\n                    TickMath.getSqrtRatioAtTick(params.tickUpper),\n                    params.liquidityDelta\n                );\n            }\n        }\n    }\n\n    /// @dev Gets and updates a position with the given liquidity delta\n    /// @param owner the owner of the position\n    /// @param tickLower the lower tick of the position's tick range\n    /// @param tickUpper the upper tick of the position's tick range\n    /// @param tick the current tick, passed to avoid sloads\n    function _updatePosition(\n        address owner,\n        int24 tickLower,\n        int24 tickUpper,\n        int128 liquidityDelta,\n        int24 tick\n    ) private returns (Position.Info storage position) {\n        position = positions.get(owner, tickLower, tickUpper);\n\n        uint256 _feeGrowthGlobal0X128 = feeGrowthGlobal0X128; // SLOAD for gas optimization\n        uint256 _feeGrowthGlobal1X128 = feeGrowthGlobal1X128; // SLOAD for gas optimization\n\n        // if we need to update the ticks, do it\n        bool flippedLower;\n        bool flippedUpper;\n        if (liquidityDelta != 0) {\n            uint32 time = _blockTimestamp();\n            (int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128) =\n                observations.observeSingle(\n                    time,\n                    0,\n                    slot0.tick,\n                    slot0.observationIndex,\n                    liquidity,\n                    slot0.observationCardinality\n                );\n\n            flippedLower = ticks.update(\n                tickLower,\n                tick,\n                liquidityDelta,\n                _feeGrowthGlobal0X128,\n                _feeGrowthGlobal1X128,\n                secondsPerLiquidityCumulativeX128,\n                tickCumulative,\n                time,\n                false,\n                maxLiquidityPerTick\n            );\n            flippedUpper = ticks.update(\n                tickUpper,\n                tick,\n                liquidityDelta,\n                _feeGrowthGlobal0X128,\n                _feeGrowthGlobal1X128,\n                secondsPerLiquidityCumulativeX128,\n                tickCumulative,\n                time,\n                true,\n                maxLiquidityPerTick\n            );\n\n            if (flippedLower) {\n                tickBitmap.flipTick(tickLower, tickSpacing);\n            }\n            if (flippedUpper) {\n                tickBitmap.flipTick(tickUpper, tickSpacing);\n            }\n        }\n\n        (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) =\n            ticks.getFeeGrowthInside(tickLower, tickUpper, tick, _feeGrowthGlobal0X128, _feeGrowthGlobal1X128);\n\n        position.update(liquidityDelta, feeGrowthInside0X128, feeGrowthInside1X128);\n\n        // clear any tick data that is no longer needed\n        if (liquidityDelta < 0) {\n            if (flippedLower) {\n                ticks.clear(tickLower);\n            }\n            if (flippedUpper) {\n                ticks.clear(tickUpper);\n            }\n        }\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    /// @dev noDelegateCall is applied indirectly via _modifyPosition\n    function mint(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount,\n        bytes calldata data\n    ) external override lock returns (uint256 amount0, uint256 amount1) {\n        require(amount > 0);\n        (, int256 amount0Int, int256 amount1Int) =\n            _modifyPosition(\n                ModifyPositionParams({\n                    owner: recipient,\n                    tickLower: tickLower,\n                    tickUpper: tickUpper,\n                    liquidityDelta: int256(amount).toInt128()\n                })\n            );\n\n        amount0 = uint256(amount0Int);\n        amount1 = uint256(amount1Int);\n\n        uint256 balance0Before;\n        uint256 balance1Before;\n        if (amount0 > 0) balance0Before = balance0();\n        if (amount1 > 0) balance1Before = balance1();\n        IMoonwalkerMintCallback(msg.sender).moonwalkerMintCallback(amount0, amount1, data);\n        if (amount0 > 0) require(balance0Before.add(amount0) <= balance0(), 'M0');\n        if (amount1 > 0) require(balance1Before.add(amount1) <= balance1(), 'M1');\n\n        emit Mint(msg.sender, recipient, tickLower, tickUpper, amount, amount0, amount1);\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    function collect(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external override lock returns (uint128 amount0, uint128 amount1) {\n        // we don't need to checkTicks here, because invalid positions will never have non-zero tokensOwed{0,1}\n        Position.Info storage position = positions.get(msg.sender, tickLower, tickUpper);\n\n        amount0 = amount0Requested > position.tokensOwed0 ? position.tokensOwed0 : amount0Requested;\n        amount1 = amount1Requested > position.tokensOwed1 ? position.tokensOwed1 : amount1Requested;\n\n        if (amount0 > 0) {\n            position.tokensOwed0 -= amount0;\n            TransferHelper.safeTransfer(token0, recipient, amount0);\n        }\n        if (amount1 > 0) {\n            position.tokensOwed1 -= amount1;\n            TransferHelper.safeTransfer(token1, recipient, amount1);\n        }\n\n        emit Collect(msg.sender, recipient, tickLower, tickUpper, amount0, amount1);\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    /// @dev noDelegateCall is applied indirectly via _modifyPosition\n    function burn(\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount\n    ) external override lock returns (uint256 amount0, uint256 amount1) {\n        (Position.Info storage position, int256 amount0Int, int256 amount1Int) =\n            _modifyPosition(\n                ModifyPositionParams({\n                    owner: msg.sender,\n                    tickLower: tickLower,\n                    tickUpper: tickUpper,\n                    liquidityDelta: -int256(amount).toInt128()\n                })\n            );\n\n        amount0 = uint256(-amount0Int);\n        amount1 = uint256(-amount1Int);\n\n        if (amount0 > 0 || amount1 > 0) {\n            (position.tokensOwed0, position.tokensOwed1) = (\n                position.tokensOwed0 + uint128(amount0),\n                position.tokensOwed1 + uint128(amount1)\n            );\n        }\n\n        emit Burn(msg.sender, tickLower, tickUpper, amount, amount0, amount1);\n    }\n\n    struct SwapCache {\n        // the protocol fee for the input token\n        uint8 feeProtocol;\n        // liquidity at the beginning of the swap\n        uint128 liquidityStart;\n        // the timestamp of the current block\n        uint32 blockTimestamp;\n        // the current value of the tick accumulator, computed only if we cross an initialized tick\n        int56 tickCumulative;\n        // the current value of seconds per liquidity accumulator, computed only if we cross an initialized tick\n        uint160 secondsPerLiquidityCumulativeX128;\n        // whether we've computed and cached the above two accumulators\n        bool computedLatestObservation;\n    }\n\n    // the top level state of the swap, the results of which are recorded in storage at the end\n    struct SwapState {\n        // the amount remaining to be swapped in/out of the input/output asset\n        int256 amountSpecifiedRemaining;\n        // the amount already swapped out/in of the output/input asset\n        int256 amountCalculated;\n        // current sqrt(price)\n        uint160 sqrtPriceX96;\n        // the tick associated with the current price\n        int24 tick;\n        // the global fee growth of the input token\n        uint256 feeGrowthGlobalX128;\n        // amount of input token paid as protocol fee\n        uint128 protocolFee;\n        // the current liquidity in range\n        uint128 liquidity;\n    }\n\n    struct StepComputations {\n        // the price at the beginning of the step\n        uint160 sqrtPriceStartX96;\n        // the next tick to swap to from the current tick in the swap direction\n        int24 tickNext;\n        // whether tickNext is initialized or not\n        bool initialized;\n        // sqrt(price) for the next tick (1/0)\n        uint160 sqrtPriceNextX96;\n        // how much is being swapped in in this step\n        uint256 amountIn;\n        // how much is being swapped out\n        uint256 amountOut;\n        // how much fee is being paid in\n        uint256 feeAmount;\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    function swap(\n        address recipient,\n        bool zeroForOne,\n        int256 amountSpecified,\n        uint160 sqrtPriceLimitX96,\n        bytes calldata data\n    ) external override noDelegateCall returns (int256 amount0, int256 amount1) {\n        require(amountSpecified != 0, 'AS');\n\n        Slot0 memory slot0Start = slot0;\n\n        require(slot0Start.unlocked, 'LOK');\n        require(\n            zeroForOne\n                ? sqrtPriceLimitX96 < slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 > TickMath.MIN_SQRT_RATIO\n                : sqrtPriceLimitX96 > slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 < TickMath.MAX_SQRT_RATIO,\n            'SPL'\n        );\n\n        slot0.unlocked = false;\n\n        SwapCache memory cache =\n            SwapCache({\n                liquidityStart: liquidity,\n                blockTimestamp: _blockTimestamp(),\n                feeProtocol: zeroForOne ? (slot0Start.feeProtocol % 16) : (slot0Start.feeProtocol >> 4),\n                secondsPerLiquidityCumulativeX128: 0,\n                tickCumulative: 0,\n                computedLatestObservation: false\n            });\n\n        bool exactInput = amountSpecified > 0;\n\n        SwapState memory state =\n            SwapState({\n                amountSpecifiedRemaining: amountSpecified,\n                amountCalculated: 0,\n                sqrtPriceX96: slot0Start.sqrtPriceX96,\n                tick: slot0Start.tick,\n                feeGrowthGlobalX128: zeroForOne ? feeGrowthGlobal0X128 : feeGrowthGlobal1X128,\n                protocolFee: 0,\n                liquidity: cache.liquidityStart\n            });\n\n        // continue swapping as long as we haven't used the entire input/output and haven't reached the price limit\n        while (state.amountSpecifiedRemaining != 0 && state.sqrtPriceX96 != sqrtPriceLimitX96) {\n            StepComputations memory step;\n\n            step.sqrtPriceStartX96 = state.sqrtPriceX96;\n\n            (step.tickNext, step.initialized) = tickBitmap.nextInitializedTickWithinOneWord(\n                state.tick,\n                tickSpacing,\n                zeroForOne\n            );\n\n            // ensure that we do not overshoot the min/max tick, as the tick bitmap is not aware of these bounds\n            if (step.tickNext < TickMath.MIN_TICK) {\n                step.tickNext = TickMath.MIN_TICK;\n            } else if (step.tickNext > TickMath.MAX_TICK) {\n                step.tickNext = TickMath.MAX_TICK;\n            }\n\n            // get the price for the next tick\n            step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\n\n            // compute values to swap to the target tick, price limit, or point where input/output amount is exhausted\n            (state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount) = SwapMath.computeSwapStep(\n                state.sqrtPriceX96,\n                (zeroForOne ? step.sqrtPriceNextX96 < sqrtPriceLimitX96 : step.sqrtPriceNextX96 > sqrtPriceLimitX96)\n                    ? sqrtPriceLimitX96\n                    : step.sqrtPriceNextX96,\n                state.liquidity,\n                state.amountSpecifiedRemaining,\n                fee\n            );\n\n            if (exactInput) {\n                state.amountSpecifiedRemaining -= (step.amountIn + step.feeAmount).toInt256();\n                state.amountCalculated = state.amountCalculated.sub(step.amountOut.toInt256());\n            } else {\n                state.amountSpecifiedRemaining += step.amountOut.toInt256();\n                state.amountCalculated = state.amountCalculated.add((step.amountIn + step.feeAmount).toInt256());\n            }\n\n            // if the protocol fee is on, calculate how much is owed, decrement feeAmount, and increment protocolFee\n            if (cache.feeProtocol > 0) {\n                uint256 delta = step.feeAmount / cache.feeProtocol;\n                step.feeAmount -= delta;\n                state.protocolFee += uint128(delta);\n            }\n\n            // update global fee tracker\n            if (state.liquidity > 0)\n                state.feeGrowthGlobalX128 += FullMath.mulDiv(step.feeAmount, FixedPoint128.Q128, state.liquidity);\n\n            // shift tick if we reached the next price\n            if (state.sqrtPriceX96 == step.sqrtPriceNextX96) {\n                // if the tick is initialized, run the tick transition\n                if (step.initialized) {\n                    // check for the placeholder value, which we replace with the actual value the first time the swap\n                    // crosses an initialized tick\n                    if (!cache.computedLatestObservation) {\n                        (cache.tickCumulative, cache.secondsPerLiquidityCumulativeX128) = observations.observeSingle(\n                            cache.blockTimestamp,\n                            0,\n                            slot0Start.tick,\n                            slot0Start.observationIndex,\n                            cache.liquidityStart,\n                            slot0Start.observationCardinality\n                        );\n                        cache.computedLatestObservation = true;\n                    }\n                    int128 liquidityNet =\n                        ticks.cross(\n                            step.tickNext,\n                            (zeroForOne ? state.feeGrowthGlobalX128 : feeGrowthGlobal0X128),\n                            (zeroForOne ? feeGrowthGlobal1X128 : state.feeGrowthGlobalX128),\n                            cache.secondsPerLiquidityCumulativeX128,\n                            cache.tickCumulative,\n                            cache.blockTimestamp\n                        );\n                    // if we're moving leftward, we interpret liquidityNet as the opposite sign\n                    // safe because liquidityNet cannot be type(int128).min\n                    if (zeroForOne) liquidityNet = -liquidityNet;\n\n                    state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n                }\n\n                state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n            } else if (state.sqrtPriceX96 != step.sqrtPriceStartX96) {\n                // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n                state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\n            }\n        }\n\n        // update tick and write an oracle entry if the tick change\n        if (state.tick != slot0Start.tick) {\n            (uint16 observationIndex, uint16 observationCardinality) =\n                observations.write(\n                    slot0Start.observationIndex,\n                    cache.blockTimestamp,\n                    slot0Start.tick,\n                    cache.liquidityStart,\n                    slot0Start.observationCardinality,\n                    slot0Start.observationCardinalityNext\n                );\n            (slot0.sqrtPriceX96, slot0.tick, slot0.observationIndex, slot0.observationCardinality) = (\n                state.sqrtPriceX96,\n                state.tick,\n                observationIndex,\n                observationCardinality\n            );\n        } else {\n            // otherwise just update the price\n            slot0.sqrtPriceX96 = state.sqrtPriceX96;\n        }\n\n        // update liquidity if it changed\n        if (cache.liquidityStart != state.liquidity) liquidity = state.liquidity;\n\n        // update fee growth global and, if necessary, protocol fees\n        // overflow is acceptable, protocol has to withdraw before it hits type(uint128).max fees\n        if (zeroForOne) {\n            feeGrowthGlobal0X128 = state.feeGrowthGlobalX128;\n            if (state.protocolFee > 0) protocolFees.token0 += state.protocolFee;\n        } else {\n            feeGrowthGlobal1X128 = state.feeGrowthGlobalX128;\n            if (state.protocolFee > 0) protocolFees.token1 += state.protocolFee;\n        }\n\n        (amount0, amount1) = zeroForOne == exactInput\n            ? (amountSpecified - state.amountSpecifiedRemaining, state.amountCalculated)\n            : (state.amountCalculated, amountSpecified - state.amountSpecifiedRemaining);\n\n        // do the transfers and collect payment\n        if (zeroForOne) {\n            if (amount1 < 0) TransferHelper.safeTransfer(token1, recipient, uint256(-amount1));\n\n            uint256 balance0Before = balance0();\n            IMoonwalkerSwapCallback(msg.sender).moonwalkerSwapCallback(amount0, amount1, data);\n            require(balance0Before.add(uint256(amount0)) <= balance0(), 'IIA');\n        } else {\n            if (amount0 < 0) TransferHelper.safeTransfer(token0, recipient, uint256(-amount0));\n\n            uint256 balance1Before = balance1();\n            IMoonwalkerSwapCallback(msg.sender).moonwalkerSwapCallback(amount0, amount1, data);\n            require(balance1Before.add(uint256(amount1)) <= balance1(), 'IIA');\n        }\n\n        emit Swap(msg.sender, recipient, amount0, amount1, state.sqrtPriceX96, state.liquidity, state.tick);\n        slot0.unlocked = true;\n    }\n\n    /// @inheritdoc IMoonwalkerPoolActions\n    function flash(\n        address recipient,\n        uint256 amount0,\n        uint256 amount1,\n        bytes calldata data\n    ) external override lock noDelegateCall {\n        uint128 _liquidity = liquidity;\n        require(_liquidity > 0, 'L');\n\n        uint256 fee0 = FullMath.mulDivRoundingUp(amount0, fee, 1e6);\n        uint256 fee1 = FullMath.mulDivRoundingUp(amount1, fee, 1e6);\n        uint256 balance0Before = balance0();\n        uint256 balance1Before = balance1();\n\n        if (amount0 > 0) TransferHelper.safeTransfer(token0, recipient, amount0);\n        if (amount1 > 0) TransferHelper.safeTransfer(token1, recipient, amount1);\n\n        IMoonwalkerFlashCallback(msg.sender).moonwalkerFlashCallback(fee0, fee1, data);\n\n        uint256 balance0After = balance0();\n        uint256 balance1After = balance1();\n\n        require(balance0Before.add(fee0) <= balance0After, 'F0');\n        require(balance1Before.add(fee1) <= balance1After, 'F1');\n\n        // sub is safe because we know balanceAfter is gt balanceBefore by at least fee\n        uint256 paid0 = balance0After - balance0Before;\n        uint256 paid1 = balance1After - balance1Before;\n\n        if (paid0 > 0) {\n            uint8 feeProtocol0 = slot0.feeProtocol % 16;\n            uint256 fees0 = feeProtocol0 == 0 ? 0 : paid0 / feeProtocol0;\n            if (uint128(fees0) > 0) protocolFees.token0 += uint128(fees0);\n            feeGrowthGlobal0X128 += FullMath.mulDiv(paid0 - fees0, FixedPoint128.Q128, _liquidity);\n        }\n        if (paid1 > 0) {\n            uint8 feeProtocol1 = slot0.feeProtocol >> 4;\n            uint256 fees1 = feeProtocol1 == 0 ? 0 : paid1 / feeProtocol1;\n            if (uint128(fees1) > 0) protocolFees.token1 += uint128(fees1);\n            feeGrowthGlobal1X128 += FullMath.mulDiv(paid1 - fees1, FixedPoint128.Q128, _liquidity);\n        }\n\n        emit Flash(msg.sender, recipient, amount0, amount1, paid0, paid1);\n    }\n\n    /// @inheritdoc IMoonwalkerPoolOwnerActions\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external override lock onlyFactoryOwner {\n        require(\n            (feeProtocol0 == 0 || (feeProtocol0 >= 4 && feeProtocol0 <= 10)) &&\n                (feeProtocol1 == 0 || (feeProtocol1 >= 4 && feeProtocol1 <= 10))\n        );\n        uint8 feeProtocolOld = slot0.feeProtocol;\n        slot0.feeProtocol = feeProtocol0 + (feeProtocol1 << 4);\n        emit SetFeeProtocol(feeProtocolOld % 16, feeProtocolOld >> 4, feeProtocol0, feeProtocol1);\n    }\n\n    /// @inheritdoc IMoonwalkerPoolOwnerActions\n    function collectProtocol(\n        address recipient,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external override lock onlyFactoryOwner returns (uint128 amount0, uint128 amount1) {\n        amount0 = amount0Requested > protocolFees.token0 ? protocolFees.token0 : amount0Requested;\n        amount1 = amount1Requested > protocolFees.token1 ? protocolFees.token1 : amount1Requested;\n\n        if (amount0 > 0) {\n            if (amount0 == protocolFees.token0) amount0--; // ensure that the slot is not cleared, for gas savings\n            protocolFees.token0 -= amount0;\n            TransferHelper.safeTransfer(token0, recipient, amount0);\n        }\n        if (amount1 > 0) {\n            if (amount1 == protocolFees.token1) amount1--; // ensure that the slot is not cleared, for gas savings\n            protocolFees.token1 -= amount1;\n            TransferHelper.safeTransfer(token1, recipient, amount1);\n        }\n\n        emit CollectProtocol(msg.sender, recipient, amount0, amount1);\n    }\n}\n",
  "sourcePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/MoonwalkerPool.sol",
  "ast": {
    "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/MoonwalkerPool.sol",
    "exportedSymbols": {
      "BitMath": [
        3800
      ],
      "FixedPoint128": [
        3807
      ],
      "FixedPoint96": [
        3817
      ],
      "FullMath": [
        3990
      ],
      "IERC20Minimal": [
        2936
      ],
      "IMoonwalkerFactory": [
        3019
      ],
      "IMoonwalkerFlashCallback": [
        3073
      ],
      "IMoonwalkerMintCallback": [
        3087
      ],
      "IMoonwalkerPool": [
        3041
      ],
      "IMoonwalkerPoolActions": [
        3197
      ],
      "IMoonwalkerPoolDeployer": [
        3059
      ],
      "IMoonwalkerPoolDerivedState": [
        3228
      ],
      "IMoonwalkerPoolEvents": [
        3347
      ],
      "IMoonwalkerPoolImmutables": [
        3387
      ],
      "IMoonwalkerPoolOwnerActions": [
        3413
      ],
      "IMoonwalkerPoolState": [
        3521
      ],
      "IMoonwalkerSwapCallback": [
        3101
      ],
      "LiquidityMath": [
        4042
      ],
      "LowGasSafeMath": [
        4172
      ],
      "MoonwalkerPool": [
        2754
      ],
      "NoDelegateCall": [
        2864
      ],
      "Oracle": [
        4907
      ],
      "Position": [
        5080
      ],
      "SafeCast": [
        5150
      ],
      "SqrtPriceMath": [
        5666
      ],
      "SwapMath": [
        5927
      ],
      "Tick": [
        6379
      ],
      "TickBitmap": [
        6635
      ],
      "TickMath": [
        7170
      ],
      "TransferHelper": [
        7221
      ],
      "UnsafeMath": [
        7237
      ]
    },
    "id": 2755,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 276,
        "literals": [
          "solidity",
          "=",
          "0.7",
          ".6"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:1"
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPool.sol",
        "file": "./interfaces/IMoonwalkerPool.sol",
        "id": 277,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3042,
        "src": "57:42:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/NoDelegateCall.sol",
        "file": "./NoDelegateCall.sol",
        "id": 278,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 2865,
        "src": "100:30:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol",
        "file": "./libraries/LowGasSafeMath.sol",
        "id": 279,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 4173,
        "src": "131:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol",
        "file": "./libraries/SafeCast.sol",
        "id": 280,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 5151,
        "src": "172:34:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol",
        "file": "./libraries/Tick.sol",
        "id": 281,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 6380,
        "src": "207:30:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickBitmap.sol",
        "file": "./libraries/TickBitmap.sol",
        "id": 282,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 6636,
        "src": "238:36:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Position.sol",
        "file": "./libraries/Position.sol",
        "id": 283,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 5081,
        "src": "275:34:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Oracle.sol",
        "file": "./libraries/Oracle.sol",
        "id": 284,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 4908,
        "src": "310:32:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FullMath.sol",
        "file": "./libraries/FullMath.sol",
        "id": 285,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3991,
        "src": "343:34:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FixedPoint128.sol",
        "file": "./libraries/FixedPoint128.sol",
        "id": 286,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3808,
        "src": "378:39:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TransferHelper.sol",
        "file": "./libraries/TransferHelper.sol",
        "id": 287,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 7222,
        "src": "418:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol",
        "file": "./libraries/TickMath.sol",
        "id": 288,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 7171,
        "src": "459:34:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol",
        "file": "./libraries/LiquidityMath.sol",
        "id": 289,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 4043,
        "src": "494:39:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SqrtPriceMath.sol",
        "file": "./libraries/SqrtPriceMath.sol",
        "id": 290,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 5667,
        "src": "534:39:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SwapMath.sol",
        "file": "./libraries/SwapMath.sol",
        "id": 291,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 5928,
        "src": "574:34:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPoolDeployer.sol",
        "file": "./interfaces/IMoonwalkerPoolDeployer.sol",
        "id": 292,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3060,
        "src": "609:50:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerFactory.sol",
        "file": "./interfaces/IMoonwalkerFactory.sol",
        "id": 293,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3020,
        "src": "660:45:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IERC20Minimal.sol",
        "file": "./interfaces/IERC20Minimal.sol",
        "id": 294,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 2937,
        "src": "706:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerMintCallback.sol",
        "file": "./interfaces/callback/IMoonwalkerMintCallback.sol",
        "id": 295,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3088,
        "src": "747:59:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerSwapCallback.sol",
        "file": "./interfaces/callback/IMoonwalkerSwapCallback.sol",
        "id": 296,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3102,
        "src": "807:59:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerFlashCallback.sol",
        "file": "./interfaces/callback/IMoonwalkerFlashCallback.sol",
        "id": 297,
        "nodeType": "ImportDirective",
        "scope": 2755,
        "sourceUnit": 3074,
        "src": "867:60:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 298,
              "name": "IMoonwalkerPool",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3041,
              "src": "956:15:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IMoonwalkerPool_$3041",
                "typeString": "contract IMoonwalkerPool"
              }
            },
            "id": 299,
            "nodeType": "InheritanceSpecifier",
            "src": "956:15:1"
          },
          {
            "baseName": {
              "id": 300,
              "name": "NoDelegateCall",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2864,
              "src": "973:14:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NoDelegateCall_$2864",
                "typeString": "contract NoDelegateCall"
              }
            },
            "id": 301,
            "nodeType": "InheritanceSpecifier",
            "src": "973:14:1"
          }
        ],
        "contractDependencies": [
          2864,
          3041,
          3197,
          3228,
          3347,
          3387,
          3413,
          3521
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 2754,
        "linearizedBaseContracts": [
          2754,
          2864,
          3041,
          3347,
          3413,
          3197,
          3228,
          3521,
          3387
        ],
        "name": "MoonwalkerPool",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 304,
            "libraryName": {
              "id": 302,
              "name": "LowGasSafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4172,
              "src": "1000:14:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LowGasSafeMath_$4172",
                "typeString": "library LowGasSafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "994:33:1",
            "typeName": {
              "id": 303,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1019:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 307,
            "libraryName": {
              "id": 305,
              "name": "LowGasSafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4172,
              "src": "1038:14:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LowGasSafeMath_$4172",
                "typeString": "library LowGasSafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1032:32:1",
            "typeName": {
              "id": 306,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "1057:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "id": 310,
            "libraryName": {
              "id": 308,
              "name": "SafeCast",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5150,
              "src": "1075:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeCast_$5150",
                "typeString": "library SafeCast"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1069:27:1",
            "typeName": {
              "id": 309,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1088:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 313,
            "libraryName": {
              "id": 311,
              "name": "SafeCast",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5150,
              "src": "1107:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeCast_$5150",
                "typeString": "library SafeCast"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1101:26:1",
            "typeName": {
              "id": 312,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "1120:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "id": 318,
            "libraryName": {
              "id": 314,
              "name": "Tick",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6379,
              "src": "1138:4:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Tick_$6379",
                "typeString": "library Tick"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1132:43:1",
            "typeName": {
              "id": 317,
              "keyType": {
                "id": 315,
                "name": "int24",
                "nodeType": "ElementaryTypeName",
                "src": "1155:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                }
              },
              "nodeType": "Mapping",
              "src": "1147:27:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                "typeString": "mapping(int24 => struct Tick.Info)"
              },
              "valueType": {
                "id": 316,
                "name": "Tick.Info",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5957,
                "src": "1164:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                  "typeString": "struct Tick.Info"
                }
              }
            }
          },
          {
            "id": 323,
            "libraryName": {
              "id": 319,
              "name": "TickBitmap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6635,
              "src": "1186:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TickBitmap_$6635",
                "typeString": "library TickBitmap"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1180:47:1",
            "typeName": {
              "id": 322,
              "keyType": {
                "id": 320,
                "name": "int16",
                "nodeType": "ElementaryTypeName",
                "src": "1209:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_int16",
                  "typeString": "int16"
                }
              },
              "nodeType": "Mapping",
              "src": "1201:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
                "typeString": "mapping(int16 => uint256)"
              },
              "valueType": {
                "id": 321,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1218:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            }
          },
          {
            "id": 328,
            "libraryName": {
              "id": 324,
              "name": "Position",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5080,
              "src": "1238:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Position_$5080",
                "typeString": "library Position"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1232:53:1",
            "typeName": {
              "id": 327,
              "keyType": {
                "id": 325,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1259:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1251:33:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$",
                "typeString": "mapping(bytes32 => struct Position.Info)"
              },
              "valueType": {
                "id": 326,
                "name": "Position.Info",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4924,
                "src": "1270:13:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                  "typeString": "struct Position.Info"
                }
              }
            }
          },
          {
            "id": 331,
            "libraryName": {
              "id": 329,
              "name": "Position",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5080,
              "src": "1296:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Position_$5080",
                "typeString": "library Position"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1290:33:1",
            "typeName": {
              "id": 330,
              "name": "Position.Info",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4924,
              "src": "1309:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                "typeString": "struct Position.Info"
              }
            }
          },
          {
            "id": 336,
            "libraryName": {
              "id": 332,
              "name": "Oracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4907,
              "src": "1334:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Oracle_$4907",
                "typeString": "library Oracle"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1328:43:1",
            "typeName": {
              "baseType": {
                "id": 333,
                "name": "Oracle.Observation",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4184,
                "src": "1345:18:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Observation_$4184_storage_ptr",
                  "typeString": "struct Oracle.Observation"
                }
              },
              "id": 335,
              "length": {
                "hexValue": "3635353335",
                "id": 334,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1364:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_65535_by_1",
                  "typeString": "int_const 65535"
                },
                "value": "65535"
              },
              "nodeType": "ArrayTypeName",
              "src": "1345:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr",
                "typeString": "struct Oracle.Observation[65535]"
              }
            }
          },
          {
            "baseFunctions": [
              3356
            ],
            "constant": false,
            "documentation": {
              "id": 337,
              "nodeType": "StructuredDocumentation",
              "src": "1377:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "c45a0155",
            "id": 340,
            "mutability": "immutable",
            "name": "factory",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 339,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1448:8:1"
            },
            "scope": 2754,
            "src": "1423:41:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 338,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1423:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3362
            ],
            "constant": false,
            "documentation": {
              "id": 341,
              "nodeType": "StructuredDocumentation",
              "src": "1470:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "0dfe1681",
            "id": 344,
            "mutability": "immutable",
            "name": "token0",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 343,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1541:8:1"
            },
            "scope": 2754,
            "src": "1516:40:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 342,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1516:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3368
            ],
            "constant": false,
            "documentation": {
              "id": 345,
              "nodeType": "StructuredDocumentation",
              "src": "1562:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "d21220a7",
            "id": 348,
            "mutability": "immutable",
            "name": "token1",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 347,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1633:8:1"
            },
            "scope": 2754,
            "src": "1608:40:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 346,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1608:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3374
            ],
            "constant": false,
            "documentation": {
              "id": 349,
              "nodeType": "StructuredDocumentation",
              "src": "1654:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "ddca3f43",
            "id": 352,
            "mutability": "immutable",
            "name": "fee",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 351,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1724:8:1"
            },
            "scope": 2754,
            "src": "1700:36:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint24",
              "typeString": "uint24"
            },
            "typeName": {
              "id": 350,
              "name": "uint24",
              "nodeType": "ElementaryTypeName",
              "src": "1700:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint24",
                "typeString": "uint24"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3380
            ],
            "constant": false,
            "documentation": {
              "id": 353,
              "nodeType": "StructuredDocumentation",
              "src": "1743:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "d0c93a7c",
            "id": 356,
            "mutability": "immutable",
            "name": "tickSpacing",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 355,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1812:8:1"
            },
            "scope": 2754,
            "src": "1789:43:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int24",
              "typeString": "int24"
            },
            "typeName": {
              "id": 354,
              "name": "int24",
              "nodeType": "ElementaryTypeName",
              "src": "1789:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_int24",
                "typeString": "int24"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3386
            ],
            "constant": false,
            "documentation": {
              "id": 357,
              "nodeType": "StructuredDocumentation",
              "src": "1839:41:1",
              "text": "@inheritdoc IMoonwalkerPoolImmutables"
            },
            "functionSelector": "70cf754a",
            "id": 360,
            "mutability": "immutable",
            "name": "maxLiquidityPerTick",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 359,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1910:8:1"
            },
            "scope": 2754,
            "src": "1885:53:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 358,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "1885:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "MoonwalkerPool.Slot0",
            "id": 375,
            "members": [
              {
                "constant": false,
                "id": 362,
                "mutability": "mutable",
                "name": "sqrtPriceX96",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "1997:20:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 361,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "1997:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 364,
                "mutability": "mutable",
                "name": "tick",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2055:10:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                },
                "typeName": {
                  "id": 363,
                  "name": "int24",
                  "nodeType": "ElementaryTypeName",
                  "src": "2055:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 366,
                "mutability": "mutable",
                "name": "observationIndex",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2144:23:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 365,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "2144:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 368,
                "mutability": "mutable",
                "name": "observationCardinality",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2253:29:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 367,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "2253:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 370,
                "mutability": "mutable",
                "name": "observationCardinalityNext",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2385:33:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 369,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "2385:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 372,
                "mutability": "mutable",
                "name": "feeProtocol",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2572:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 371,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "2572:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 374,
                "mutability": "mutable",
                "name": "unlocked",
                "nodeType": "VariableDeclaration",
                "scope": 375,
                "src": "2637:13:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 373,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2637:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Slot0",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "1945:712:1",
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3434
            ],
            "constant": false,
            "documentation": {
              "id": 376,
              "nodeType": "StructuredDocumentation",
              "src": "2662:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "3850c7bd",
            "id": 379,
            "mutability": "mutable",
            "name": "slot0",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 378,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2716:8:1"
            },
            "scope": 2754,
            "src": "2703:27:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Slot0_$375_storage",
              "typeString": "struct MoonwalkerPool.Slot0"
            },
            "typeName": {
              "id": 377,
              "name": "Slot0",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 375,
              "src": "2703:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Slot0_$375_storage_ptr",
                "typeString": "struct MoonwalkerPool.Slot0"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3440
            ],
            "constant": false,
            "documentation": {
              "id": 380,
              "nodeType": "StructuredDocumentation",
              "src": "2737:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "f3058399",
            "id": 383,
            "mutability": "mutable",
            "name": "feeGrowthGlobal0X128",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 382,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2793:8:1"
            },
            "scope": 2754,
            "src": "2778:44:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 381,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2778:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3446
            ],
            "constant": false,
            "documentation": {
              "id": 384,
              "nodeType": "StructuredDocumentation",
              "src": "2828:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "46141319",
            "id": 387,
            "mutability": "mutable",
            "name": "feeGrowthGlobal1X128",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 386,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2884:8:1"
            },
            "scope": 2754,
            "src": "2869:44:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 385,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2869:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "MoonwalkerPool.ProtocolFees",
            "id": 392,
            "members": [
              {
                "constant": false,
                "id": 389,
                "mutability": "mutable",
                "name": "token0",
                "nodeType": "VariableDeclaration",
                "scope": 392,
                "src": "3006:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 388,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "3006:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 391,
                "mutability": "mutable",
                "name": "token1",
                "nodeType": "VariableDeclaration",
                "scope": 392,
                "src": "3030:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 390,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "3030:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ProtocolFees",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "2976:75:1",
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3454
            ],
            "constant": false,
            "documentation": {
              "id": 393,
              "nodeType": "StructuredDocumentation",
              "src": "3056:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "1ad8b03b",
            "id": 396,
            "mutability": "mutable",
            "name": "protocolFees",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 395,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3117:8:1"
            },
            "scope": 2754,
            "src": "3097:41:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
              "typeString": "struct MoonwalkerPool.ProtocolFees"
            },
            "typeName": {
              "id": 394,
              "name": "ProtocolFees",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 392,
              "src": "3097:12:1",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_ProtocolFees_$392_storage_ptr",
                "typeString": "struct MoonwalkerPool.ProtocolFees"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3460
            ],
            "constant": false,
            "documentation": {
              "id": 397,
              "nodeType": "StructuredDocumentation",
              "src": "3145:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "1a686502",
            "id": 400,
            "mutability": "mutable",
            "name": "liquidity",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 399,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3201:8:1"
            },
            "scope": 2754,
            "src": "3186:33:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 398,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "3186:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3482
            ],
            "constant": false,
            "documentation": {
              "id": 401,
              "nodeType": "StructuredDocumentation",
              "src": "3226:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "f30dba93",
            "id": 406,
            "mutability": "mutable",
            "name": "ticks",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 405,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3302:8:1"
            },
            "scope": 2754,
            "src": "3267:49:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
              "typeString": "mapping(int24 => struct Tick.Info)"
            },
            "typeName": {
              "id": 404,
              "keyType": {
                "id": 402,
                "name": "int24",
                "nodeType": "ElementaryTypeName",
                "src": "3275:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                }
              },
              "nodeType": "Mapping",
              "src": "3267:27:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                "typeString": "mapping(int24 => struct Tick.Info)"
              },
              "valueType": {
                "id": 403,
                "name": "Tick.Info",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5957,
                "src": "3284:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                  "typeString": "struct Tick.Info"
                }
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3490
            ],
            "constant": false,
            "documentation": {
              "id": 407,
              "nodeType": "StructuredDocumentation",
              "src": "3322:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "5339c296",
            "id": 412,
            "mutability": "mutable",
            "name": "tickBitmap",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 411,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3396:8:1"
            },
            "scope": 2754,
            "src": "3363:52:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
              "typeString": "mapping(int16 => uint256)"
            },
            "typeName": {
              "id": 410,
              "keyType": {
                "id": 408,
                "name": "int16",
                "nodeType": "ElementaryTypeName",
                "src": "3371:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_int16",
                  "typeString": "int16"
                }
              },
              "nodeType": "Mapping",
              "src": "3363:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
                "typeString": "mapping(int16 => uint256)"
              },
              "valueType": {
                "id": 409,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3380:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3506
            ],
            "constant": false,
            "documentation": {
              "id": 413,
              "nodeType": "StructuredDocumentation",
              "src": "3421:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "514ea4bf",
            "id": 418,
            "mutability": "mutable",
            "name": "positions",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 417,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3503:8:1"
            },
            "scope": 2754,
            "src": "3462:59:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$",
              "typeString": "mapping(bytes32 => struct Position.Info)"
            },
            "typeName": {
              "id": 416,
              "keyType": {
                "id": 414,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "3470:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "3462:33:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$",
                "typeString": "mapping(bytes32 => struct Position.Info)"
              },
              "valueType": {
                "id": 415,
                "name": "Position.Info",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4924,
                "src": "3481:13:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                  "typeString": "struct Position.Info"
                }
              }
            },
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3520
            ],
            "constant": false,
            "documentation": {
              "id": 419,
              "nodeType": "StructuredDocumentation",
              "src": "3527:36:1",
              "text": "@inheritdoc IMoonwalkerPoolState"
            },
            "functionSelector": "252c09d7",
            "id": 424,
            "mutability": "mutable",
            "name": "observations",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 423,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3601:8:1"
            },
            "scope": 2754,
            "src": "3568:54:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
              "typeString": "struct Oracle.Observation[65535]"
            },
            "typeName": {
              "baseType": {
                "id": 420,
                "name": "Oracle.Observation",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4184,
                "src": "3568:18:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Observation_$4184_storage_ptr",
                  "typeString": "struct Oracle.Observation"
                }
              },
              "id": 422,
              "length": {
                "hexValue": "3635353335",
                "id": 421,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3587:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_65535_by_1",
                  "typeString": "int_const 65535"
                },
                "value": "65535"
              },
              "nodeType": "ArrayTypeName",
              "src": "3568:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr",
                "typeString": "struct Oracle.Observation[65535]"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 446,
              "nodeType": "Block",
              "src": "3993:121:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 428,
                          "name": "slot0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 379,
                          "src": "4011:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                          }
                        },
                        "id": 429,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "unlocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 374,
                        "src": "4011:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c4f4b",
                        "id": 430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4027:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                          "typeString": "literal_string \"LOK\""
                        },
                        "value": "LOK"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                          "typeString": "literal_string \"LOK\""
                        }
                      ],
                      "id": 427,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4003:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4003:30:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 432,
                  "nodeType": "ExpressionStatement",
                  "src": "4003:30:1"
                },
                {
                  "expression": {
                    "id": 437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 433,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "4043:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 435,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "unlocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 374,
                      "src": "4043:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4060:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "4043:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 438,
                  "nodeType": "ExpressionStatement",
                  "src": "4043:22:1"
                },
                {
                  "id": 439,
                  "nodeType": "PlaceholderStatement",
                  "src": "4075:1:1"
                },
                {
                  "expression": {
                    "id": 444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 440,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "4086:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 442,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "unlocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 374,
                      "src": "4086:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 443,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4103:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4086:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 445,
                  "nodeType": "ExpressionStatement",
                  "src": "4086:21:1"
                }
              ]
            },
            "documentation": {
              "id": 425,
              "nodeType": "StructuredDocumentation",
              "src": "3629:343:1",
              "text": "@dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n we use balance checks to determine the payment status of interactions such as mint, swap and flash."
            },
            "id": 447,
            "name": "lock",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3990:2:1"
            },
            "src": "3977:137:1",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 462,
              "nodeType": "Block",
              "src": "4259:86:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 451,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "4277:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "4277:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 454,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 340,
                                  "src": "4310:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 453,
                                "name": "IMoonwalkerFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3019,
                                "src": "4291:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMoonwalkerFactory_$3019_$",
                                  "typeString": "type(contract IMoonwalkerFactory)"
                                }
                              },
                              "id": 455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4291:27:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMoonwalkerFactory_$3019",
                                "typeString": "contract IMoonwalkerFactory"
                              }
                            },
                            "id": 456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2972,
                            "src": "4291:33:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4291:35:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4277:49:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 450,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4269:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4269:58:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 460,
                  "nodeType": "ExpressionStatement",
                  "src": "4269:58:1"
                },
                {
                  "id": 461,
                  "nodeType": "PlaceholderStatement",
                  "src": "4337:1:1"
                }
              ]
            },
            "documentation": {
              "id": 448,
              "nodeType": "StructuredDocumentation",
              "src": "4120:106:1",
              "text": "@dev Prevents calling a function from anyone except the address returned by IMoonwalkerFactory#owner()"
            },
            "id": 463,
            "name": "onlyFactoryOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 449,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4256:2:1"
            },
            "src": "4231:114:1",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 494,
              "nodeType": "Block",
              "src": "4365:260:1",
              "statements": [
                {
                  "assignments": [
                    467
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 467,
                      "mutability": "mutable",
                      "name": "_tickSpacing",
                      "nodeType": "VariableDeclaration",
                      "scope": 494,
                      "src": "4375:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 466,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "4375:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 468,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4375:18:1"
                },
                {
                  "expression": {
                    "id": 481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 469,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 340,
                          "src": "4404:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 470,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 344,
                          "src": "4413:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 471,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 348,
                          "src": "4421:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 472,
                          "name": "fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 352,
                          "src": "4429:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        {
                          "id": 473,
                          "name": "_tickSpacing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 467,
                          "src": "4434:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "id": 474,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4403:44:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$",
                        "typeString": "tuple(address,address,address,uint24,int24)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 476,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "4474:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4474:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 475,
                            "name": "IMoonwalkerPoolDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3059,
                            "src": "4450:23:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IMoonwalkerPoolDeployer_$3059_$",
                              "typeString": "type(contract IMoonwalkerPoolDeployer)"
                            }
                          },
                          "id": 478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4450:35:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMoonwalkerPoolDeployer_$3059",
                            "typeString": "contract IMoonwalkerPoolDeployer"
                          }
                        },
                        "id": 479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "parameters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3058,
                        "src": "4450:46:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$",
                          "typeString": "function () view external returns (address,address,address,uint24,int24)"
                        }
                      },
                      "id": 480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4450:48:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$",
                        "typeString": "tuple(address,address,address,uint24,int24)"
                      }
                    },
                    "src": "4403:95:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 482,
                  "nodeType": "ExpressionStatement",
                  "src": "4403:95:1"
                },
                {
                  "expression": {
                    "id": 485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 483,
                      "name": "tickSpacing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 356,
                      "src": "4508:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 484,
                      "name": "_tickSpacing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 467,
                      "src": "4522:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "4508:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "id": 486,
                  "nodeType": "ExpressionStatement",
                  "src": "4508:26:1"
                },
                {
                  "expression": {
                    "id": 492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 487,
                      "name": "maxLiquidityPerTick",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 360,
                      "src": "4545:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 490,
                          "name": "_tickSpacing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 467,
                          "src": "4605:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        ],
                        "expression": {
                          "id": 488,
                          "name": "Tick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6379,
                          "src": "4567:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Tick_$6379_$",
                            "typeString": "type(library Tick)"
                          }
                        },
                        "id": 489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tickSpacingToMaxLiquidityPerTick",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6008,
                        "src": "4567:37:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint128_$",
                          "typeString": "function (int24) pure returns (uint128)"
                        }
                      },
                      "id": 491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4567:51:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "4545:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 493,
                  "nodeType": "ExpressionStatement",
                  "src": "4545:73:1"
                }
              ]
            },
            "id": 495,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4362:2:1"
            },
            "returnParameters": {
              "id": 465,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4365:0:1"
            },
            "scope": 2754,
            "src": "4351:274:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 526,
              "nodeType": "Block",
              "src": "4748:166:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "id": 506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 504,
                          "name": "tickLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 498,
                          "src": "4766:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 505,
                          "name": "tickUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 500,
                          "src": "4778:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "src": "4766:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "544c55",
                        "id": 507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4789:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b",
                          "typeString": "literal_string \"TLU\""
                        },
                        "value": "TLU"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b",
                          "typeString": "literal_string \"TLU\""
                        }
                      ],
                      "id": 503,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4758:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4758:37:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 509,
                  "nodeType": "ExpressionStatement",
                  "src": "4758:37:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "id": 514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 511,
                          "name": "tickLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 498,
                          "src": "4813:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "expression": {
                            "id": 512,
                            "name": "TickMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7170,
                            "src": "4826:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                              "typeString": "type(library TickMath)"
                            }
                          },
                          "id": 513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MIN_TICK",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6643,
                          "src": "4826:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "src": "4813:30:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "544c4d",
                        "id": 515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4845:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5",
                          "typeString": "literal_string \"TLM\""
                        },
                        "value": "TLM"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5",
                          "typeString": "literal_string \"TLM\""
                        }
                      ],
                      "id": 510,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4805:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4805:46:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 517,
                  "nodeType": "ExpressionStatement",
                  "src": "4805:46:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "id": 522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 519,
                          "name": "tickUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 500,
                          "src": "4869:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "expression": {
                            "id": 520,
                            "name": "TickMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7170,
                            "src": "4882:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                              "typeString": "type(library TickMath)"
                            }
                          },
                          "id": 521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MAX_TICK",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6648,
                          "src": "4882:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "src": "4869:30:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "54554d",
                        "id": 523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4901:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359",
                          "typeString": "literal_string \"TUM\""
                        },
                        "value": "TUM"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359",
                          "typeString": "literal_string \"TUM\""
                        }
                      ],
                      "id": 518,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4861:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4861:46:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 525,
                  "nodeType": "ExpressionStatement",
                  "src": "4861:46:1"
                }
              ]
            },
            "documentation": {
              "id": 496,
              "nodeType": "StructuredDocumentation",
              "src": "4631:45:1",
              "text": "@dev Common checks for valid tick inputs."
            },
            "id": 527,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkTicks",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 498,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4701:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 497,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4701:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 500,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4718:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4718:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4700:34:1"
            },
            "returnParameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4748:0:1"
            },
            "scope": 2754,
            "src": "4681:233:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 539,
              "nodeType": "Block",
              "src": "5101:72:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 535,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967292,
                          "src": "5125:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "5125:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5118:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint32_$",
                        "typeString": "type(uint32)"
                      },
                      "typeName": {
                        "id": 533,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5118:6:1",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5118:23:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 532,
                  "id": 538,
                  "nodeType": "Return",
                  "src": "5111:30:1"
                }
              ]
            },
            "documentation": {
              "id": 528,
              "nodeType": "StructuredDocumentation",
              "src": "4920:110:1",
              "text": "@dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests."
            },
            "id": 540,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_blockTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5059:2:1"
            },
            "returnParameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 540,
                  "src": "5093:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5093:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5092:8:1"
            },
            "scope": 2754,
            "src": "5035:138:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 581,
              "nodeType": "Block",
              "src": "5407:246:1",
              "statements": [
                {
                  "assignments": [
                    547,
                    549
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 547,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 581,
                      "src": "5418:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 546,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5418:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 549,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 581,
                      "src": "5432:17:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 548,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5432:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 563,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 554,
                                "name": "IERC20Minimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "5506:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$2936_$",
                                  "typeString": "type(contract IERC20Minimal)"
                                }
                              },
                              "id": 555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2875,
                              "src": "5506:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function IERC20Minimal.balanceOf(address) view returns (uint256)"
                              }
                            },
                            "id": 556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "5506:32:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 559,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "5548:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                  "typeString": "contract MoonwalkerPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                  "typeString": "contract MoonwalkerPool"
                                }
                              ],
                              "id": 558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5540:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 557,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5540:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5540:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 552,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5483:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSelector",
                          "nodeType": "MemberAccess",
                          "src": "5483:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes4) pure returns (bytes memory)"
                          }
                        },
                        "id": 561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5483:71:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 550,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 344,
                        "src": "5465:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "5465:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5465:90:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5417:138:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 565,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 547,
                          "src": "5573:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 566,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 549,
                              "src": "5584:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5584:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5599:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "5584:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5573:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 564,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5565:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5565:37:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 572,
                  "nodeType": "ExpressionStatement",
                  "src": "5565:37:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 575,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 549,
                        "src": "5630:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5637:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 576,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5637:7:1",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 578,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "5636:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 573,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "5619:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "5619:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5619:27:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 545,
                  "id": 580,
                  "nodeType": "Return",
                  "src": "5612:34:1"
                }
              ]
            },
            "documentation": {
              "id": 541,
              "nodeType": "StructuredDocumentation",
              "src": "5179:172:1",
              "text": "@dev Get the pool's balance of token0\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check"
            },
            "id": 582,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balance0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 542,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5373:2:1"
            },
            "returnParameters": {
              "id": 545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 544,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 582,
                  "src": "5398:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5398:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5397:9:1"
            },
            "scope": 2754,
            "src": "5356:297:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 623,
              "nodeType": "Block",
              "src": "5887:246:1",
              "statements": [
                {
                  "assignments": [
                    589,
                    591
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 589,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 623,
                      "src": "5898:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 588,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5898:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 591,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 623,
                      "src": "5912:17:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 590,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5912:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 605,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 596,
                                "name": "IERC20Minimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "5986:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$2936_$",
                                  "typeString": "type(contract IERC20Minimal)"
                                }
                              },
                              "id": 597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2875,
                              "src": "5986:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function IERC20Minimal.balanceOf(address) view returns (uint256)"
                              }
                            },
                            "id": 598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "5986:32:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 601,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "6028:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                  "typeString": "contract MoonwalkerPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                  "typeString": "contract MoonwalkerPool"
                                }
                              ],
                              "id": 600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6020:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 599,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6020:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6020:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 594,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5963:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSelector",
                          "nodeType": "MemberAccess",
                          "src": "5963:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes4) pure returns (bytes memory)"
                          }
                        },
                        "id": 603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5963:71:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 592,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 348,
                        "src": "5945:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "5945:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5945:90:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5897:138:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 607,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 589,
                          "src": "6053:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 608,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 591,
                              "src": "6064:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6064:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6079:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "6064:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6053:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6045:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6045:37:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 614,
                  "nodeType": "ExpressionStatement",
                  "src": "6045:37:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 617,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 591,
                        "src": "6110:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6117:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 618,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6117:7:1",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 620,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6116:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 615,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "6099:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6099:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6099:27:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 587,
                  "id": 622,
                  "nodeType": "Return",
                  "src": "6092:34:1"
                }
              ]
            },
            "documentation": {
              "id": 583,
              "nodeType": "StructuredDocumentation",
              "src": "5659:172:1",
              "text": "@dev Get the pool's balance of token1\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check"
            },
            "id": 624,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balance1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 584,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5853:2:1"
            },
            "returnParameters": {
              "id": 587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 586,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "5878:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 585,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5877:9:1"
            },
            "scope": 2754,
            "src": "5836:297:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              3227
            ],
            "body": {
              "id": 805,
              "nodeType": "Block",
              "src": "6482:2559:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 642,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 627,
                        "src": "6503:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 643,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 629,
                        "src": "6514:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      ],
                      "id": 641,
                      "name": "checkTicks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 527,
                      "src": "6492:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int24_$_t_int24_$returns$__$",
                        "typeString": "function (int24,int24) pure"
                      }
                    },
                    "id": 644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6492:32:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 645,
                  "nodeType": "ExpressionStatement",
                  "src": "6492:32:1"
                },
                {
                  "assignments": [
                    647
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 647,
                      "mutability": "mutable",
                      "name": "tickCumulativeLower",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6535:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      },
                      "typeName": {
                        "id": 646,
                        "name": "int56",
                        "nodeType": "ElementaryTypeName",
                        "src": "6535:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 648,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6535:25:1"
                },
                {
                  "assignments": [
                    650
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 650,
                      "mutability": "mutable",
                      "name": "tickCumulativeUpper",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6570:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      },
                      "typeName": {
                        "id": 649,
                        "name": "int56",
                        "nodeType": "ElementaryTypeName",
                        "src": "6570:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 651,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6570:25:1"
                },
                {
                  "assignments": [
                    653
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 653,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityOutsideLowerX128",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6605:43:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 652,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "6605:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 654,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6605:43:1"
                },
                {
                  "assignments": [
                    656
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 656,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityOutsideUpperX128",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6658:43:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 655,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "6658:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 657,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6658:43:1"
                },
                {
                  "assignments": [
                    659
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 659,
                      "mutability": "mutable",
                      "name": "secondsOutsideLower",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6711:26:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 658,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6711:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 660,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6711:26:1"
                },
                {
                  "assignments": [
                    662
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 662,
                      "mutability": "mutable",
                      "name": "secondsOutsideUpper",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "6747:26:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 661,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6747:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 663,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6747:26:1"
                },
                {
                  "id": 726,
                  "nodeType": "Block",
                  "src": "6784:872:1",
                  "statements": [
                    {
                      "assignments": [
                        667
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 667,
                          "mutability": "mutable",
                          "name": "lower",
                          "nodeType": "VariableDeclaration",
                          "scope": 726,
                          "src": "6798:23:1",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info"
                          },
                          "typeName": {
                            "id": 666,
                            "name": "Tick.Info",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5957,
                            "src": "6798:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                              "typeString": "struct Tick.Info"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 671,
                      "initialValue": {
                        "baseExpression": {
                          "id": 668,
                          "name": "ticks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "6824:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                            "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                          }
                        },
                        "id": 670,
                        "indexExpression": {
                          "id": 669,
                          "name": "tickLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 627,
                          "src": "6830:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6824:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage",
                          "typeString": "struct Tick.Info storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6798:42:1"
                    },
                    {
                      "assignments": [
                        675
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 675,
                          "mutability": "mutable",
                          "name": "upper",
                          "nodeType": "VariableDeclaration",
                          "scope": 726,
                          "src": "6854:23:1",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info"
                          },
                          "typeName": {
                            "id": 674,
                            "name": "Tick.Info",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5957,
                            "src": "6854:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                              "typeString": "struct Tick.Info"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 679,
                      "initialValue": {
                        "baseExpression": {
                          "id": 676,
                          "name": "ticks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "6880:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                            "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                          }
                        },
                        "id": 678,
                        "indexExpression": {
                          "id": 677,
                          "name": "tickUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 629,
                          "src": "6886:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6880:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage",
                          "typeString": "struct Tick.Info storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6854:42:1"
                    },
                    {
                      "assignments": [
                        681
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 681,
                          "mutability": "mutable",
                          "name": "initializedLower",
                          "nodeType": "VariableDeclaration",
                          "scope": 726,
                          "src": "6910:21:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 680,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "6910:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 682,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6910:21:1"
                    },
                    {
                      "expression": {
                        "id": 697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 683,
                              "name": "tickCumulativeLower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 647,
                              "src": "6946:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            {
                              "id": 684,
                              "name": "secondsPerLiquidityOutsideLowerX128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 653,
                              "src": "6967:35:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "id": 685,
                              "name": "secondsOutsideLower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 659,
                              "src": "7004:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 686,
                              "name": "initializedLower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 681,
                              "src": "7025:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 687,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "6945:97:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$",
                            "typeString": "tuple(int56,uint160,uint32,bool)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "components": [
                            {
                              "expression": {
                                "id": 688,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 667,
                                "src": "7063:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 689,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tickCumulativeOutside",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5950,
                              "src": "7063:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            {
                              "expression": {
                                "id": 690,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 667,
                                "src": "7108:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 691,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "secondsPerLiquidityOutsideX128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5952,
                              "src": "7108:36:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "expression": {
                                "id": 692,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 667,
                                "src": "7162:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 693,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "secondsOutside",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5954,
                              "src": "7162:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 694,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 667,
                                "src": "7200:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "initialized",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5956,
                              "src": "7200:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 696,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7045:186:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$",
                            "typeString": "tuple(int56,uint160,uint32,bool)"
                          }
                        },
                        "src": "6945:286:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 698,
                      "nodeType": "ExpressionStatement",
                      "src": "6945:286:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 700,
                            "name": "initializedLower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 681,
                            "src": "7253:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 699,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "7245:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7245:25:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 702,
                      "nodeType": "ExpressionStatement",
                      "src": "7245:25:1"
                    },
                    {
                      "assignments": [
                        704
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 704,
                          "mutability": "mutable",
                          "name": "initializedUpper",
                          "nodeType": "VariableDeclaration",
                          "scope": 726,
                          "src": "7285:21:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 703,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "7285:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 705,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7285:21:1"
                    },
                    {
                      "expression": {
                        "id": 720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 706,
                              "name": "tickCumulativeUpper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 650,
                              "src": "7321:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            {
                              "id": 707,
                              "name": "secondsPerLiquidityOutsideUpperX128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 656,
                              "src": "7342:35:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "id": 708,
                              "name": "secondsOutsideUpper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 662,
                              "src": "7379:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 709,
                              "name": "initializedUpper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 704,
                              "src": "7400:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 710,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "7320:97:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$",
                            "typeString": "tuple(int56,uint160,uint32,bool)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "components": [
                            {
                              "expression": {
                                "id": 711,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 675,
                                "src": "7438:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 712,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tickCumulativeOutside",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5950,
                              "src": "7438:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            {
                              "expression": {
                                "id": 713,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 675,
                                "src": "7483:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 714,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "secondsPerLiquidityOutsideX128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5952,
                              "src": "7483:36:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "expression": {
                                "id": 715,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 675,
                                "src": "7537:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 716,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "secondsOutside",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5954,
                              "src": "7537:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 717,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 675,
                                "src": "7575:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 718,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "initialized",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5956,
                              "src": "7575:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 719,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7420:186:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$",
                            "typeString": "tuple(int56,uint160,uint32,bool)"
                          }
                        },
                        "src": "7320:286:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 721,
                      "nodeType": "ExpressionStatement",
                      "src": "7320:286:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 723,
                            "name": "initializedUpper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 704,
                            "src": "7628:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 722,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "7620:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7620:25:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 725,
                      "nodeType": "ExpressionStatement",
                      "src": "7620:25:1"
                    }
                  ]
                },
                {
                  "assignments": [
                    728
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 728,
                      "mutability": "mutable",
                      "name": "_slot0",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "7666:19:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                        "typeString": "struct MoonwalkerPool.Slot0"
                      },
                      "typeName": {
                        "id": 727,
                        "name": "Slot0",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 375,
                        "src": "7666:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage_ptr",
                          "typeString": "struct MoonwalkerPool.Slot0"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 730,
                  "initialValue": {
                    "id": 729,
                    "name": "slot0",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 379,
                    "src": "7688:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slot0_$375_storage",
                      "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7666:27:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 731,
                        "name": "_slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 728,
                        "src": "7708:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                          "typeString": "struct MoonwalkerPool.Slot0 memory"
                        }
                      },
                      "id": 732,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tick",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 364,
                      "src": "7708:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 733,
                      "name": "tickLower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 627,
                      "src": "7722:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "7708:23:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "id": 750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 747,
                          "name": "_slot0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 728,
                          "src": "7998:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                          }
                        },
                        "id": 748,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tick",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 364,
                        "src": "7998:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 749,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 629,
                        "src": "8012:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "src": "7998:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 802,
                      "nodeType": "Block",
                      "src": "8780:255:1",
                      "statements": [
                        {
                          "expression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                },
                                "id": 793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 791,
                                  "name": "tickCumulativeUpper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 650,
                                  "src": "8819:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 792,
                                  "name": "tickCumulativeLower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 647,
                                  "src": "8841:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "src": "8819:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                "id": 796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 794,
                                  "name": "secondsPerLiquidityOutsideUpperX128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 656,
                                  "src": "8878:35:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 795,
                                  "name": "secondsPerLiquidityOutsideLowerX128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 653,
                                  "src": "8916:35:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "8878:73:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 797,
                                  "name": "secondsOutsideUpper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 662,
                                  "src": "8969:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 798,
                                  "name": "secondsOutsideLower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 659,
                                  "src": "8991:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "8969:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "id": 800,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8801:223:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$",
                              "typeString": "tuple(int56,uint160,uint32)"
                            }
                          },
                          "functionReturnParameters": 640,
                          "id": 801,
                          "nodeType": "Return",
                          "src": "8794:230:1"
                        }
                      ]
                    },
                    "id": 803,
                    "nodeType": "IfStatement",
                    "src": "7994:1041:1",
                    "trueBody": {
                      "id": 790,
                      "nodeType": "Block",
                      "src": "8023:751:1",
                      "statements": [
                        {
                          "assignments": [
                            752
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 752,
                              "mutability": "mutable",
                              "name": "time",
                              "nodeType": "VariableDeclaration",
                              "scope": 790,
                              "src": "8037:11:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "typeName": {
                                "id": 751,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8037:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 755,
                          "initialValue": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 753,
                              "name": "_blockTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 540,
                              "src": "8051:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                                "typeString": "function () view returns (uint32)"
                              }
                            },
                            "id": 754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8051:17:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8037:31:1"
                        },
                        {
                          "assignments": [
                            757,
                            759
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 757,
                              "mutability": "mutable",
                              "name": "tickCumulative",
                              "nodeType": "VariableDeclaration",
                              "scope": 790,
                              "src": "8083:20:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              },
                              "typeName": {
                                "id": 756,
                                "name": "int56",
                                "nodeType": "ElementaryTypeName",
                                "src": "8083:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              "visibility": "internal"
                            },
                            {
                              "constant": false,
                              "id": 759,
                              "mutability": "mutable",
                              "name": "secondsPerLiquidityCumulativeX128",
                              "nodeType": "VariableDeclaration",
                              "scope": 790,
                              "src": "8105:41:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "typeName": {
                                "id": 758,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "8105:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 772,
                          "initialValue": {
                            "arguments": [
                              {
                                "id": 762,
                                "name": "time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 752,
                                "src": "8214:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8240:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "expression": {
                                  "id": 764,
                                  "name": "_slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 728,
                                  "src": "8263:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.Slot0 memory"
                                  }
                                },
                                "id": 765,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 364,
                                "src": "8263:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 766,
                                  "name": "_slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 728,
                                  "src": "8296:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.Slot0 memory"
                                  }
                                },
                                "id": 767,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "observationIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 366,
                                "src": "8296:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "id": 768,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 400,
                                "src": "8341:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "expression": {
                                  "id": 769,
                                  "name": "_slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 728,
                                  "src": "8372:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.Slot0 memory"
                                  }
                                },
                                "id": 770,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "observationCardinality",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 368,
                                "src": "8372:29:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "expression": {
                                "id": 760,
                                "name": "observations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 424,
                                "src": "8166:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                                  "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                                }
                              },
                              "id": 761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observeSingle",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4820,
                              "src": "8166:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                                "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                              }
                            },
                            "id": 771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8166:253:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$",
                              "typeString": "tuple(int56,uint160)"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8082:337:1"
                        },
                        {
                          "expression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                },
                                "id": 777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  },
                                  "id": 775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 773,
                                    "name": "tickCumulative",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 757,
                                    "src": "8458:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int56",
                                      "typeString": "int56"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 774,
                                    "name": "tickCumulativeLower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 647,
                                    "src": "8475:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int56",
                                      "typeString": "int56"
                                    }
                                  },
                                  "src": "8458:36:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 776,
                                  "name": "tickCumulativeUpper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 650,
                                  "src": "8497:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "src": "8458:58:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                "id": 782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  "id": 780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 778,
                                    "name": "secondsPerLiquidityCumulativeX128",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 759,
                                    "src": "8534:33:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 779,
                                    "name": "secondsPerLiquidityOutsideLowerX128",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 653,
                                    "src": "8590:35:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  },
                                  "src": "8534:91:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 781,
                                  "name": "secondsPerLiquidityOutsideUpperX128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 656,
                                  "src": "8648:35:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "8534:149:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 785,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 783,
                                    "name": "time",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 752,
                                    "src": "8701:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 784,
                                    "name": "secondsOutsideLower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 659,
                                    "src": "8708:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "8701:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 786,
                                  "name": "secondsOutsideUpper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 662,
                                  "src": "8730:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "8701:48:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "id": 788,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8440:323:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$",
                              "typeString": "tuple(int56,uint160,uint32)"
                            }
                          },
                          "functionReturnParameters": 640,
                          "id": 789,
                          "nodeType": "Return",
                          "src": "8433:330:1"
                        }
                      ]
                    }
                  },
                  "id": 804,
                  "nodeType": "IfStatement",
                  "src": "7704:1331:1",
                  "trueBody": {
                    "id": 746,
                    "nodeType": "Block",
                    "src": "7733:255:1",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              },
                              "id": 737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 735,
                                "name": "tickCumulativeLower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 647,
                                "src": "7772:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 736,
                                "name": "tickCumulativeUpper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 650,
                                "src": "7794:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              "src": "7772:41:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "id": 740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 738,
                                "name": "secondsPerLiquidityOutsideLowerX128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 653,
                                "src": "7831:35:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 739,
                                "name": "secondsPerLiquidityOutsideUpperX128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 656,
                                "src": "7869:35:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "src": "7831:73:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 741,
                                "name": "secondsOutsideLower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 659,
                                "src": "7922:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 742,
                                "name": "secondsOutsideUpper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 662,
                                "src": "7944:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "7922:41:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "id": 744,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7754:223:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$",
                            "typeString": "tuple(int56,uint160,uint32)"
                          }
                        },
                        "functionReturnParameters": 640,
                        "id": 745,
                        "nodeType": "Return",
                        "src": "7747:230:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 625,
              "nodeType": "StructuredDocumentation",
              "src": "6139:43:1",
              "text": "@inheritdoc IMoonwalkerPoolDerivedState"
            },
            "functionSelector": "a38807f2",
            "id": 806,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 633,
                "modifierName": {
                  "id": 632,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "6311:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6311:14:1"
              }
            ],
            "name": "snapshotCumulativesInside",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 631,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6294:8:1"
            },
            "parameters": {
              "id": 630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 627,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "6222:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 626,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "6222:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 629,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "6239:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 628,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "6239:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6221:34:1"
            },
            "returnParameters": {
              "id": 640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 635,
                  "mutability": "mutable",
                  "name": "tickCumulativeInside",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "6356:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  },
                  "typeName": {
                    "id": 634,
                    "name": "int56",
                    "nodeType": "ElementaryTypeName",
                    "src": "6356:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int56",
                      "typeString": "int56"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 637,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityInsideX128",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "6396:37:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 636,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "6396:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 639,
                  "mutability": "mutable",
                  "name": "secondsInside",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "6447:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 638,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6447:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6342:135:1"
            },
            "scope": 2754,
            "src": "6187:2854:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3213
            ],
            "body": {
              "id": 836,
              "nodeType": "Block",
              "src": "9319:275:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 824,
                          "name": "_blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 540,
                          "src": "9386:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                            "typeString": "function () view returns (uint32)"
                          }
                        },
                        "id": 825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9386:17:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 826,
                        "name": "secondsAgos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 810,
                        "src": "9421:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr",
                          "typeString": "uint32[] calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 827,
                          "name": "slot0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 379,
                          "src": "9450:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                          }
                        },
                        "id": 828,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tick",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 364,
                        "src": "9450:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "expression": {
                          "id": 829,
                          "name": "slot0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 379,
                          "src": "9478:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                          }
                        },
                        "id": 830,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "observationIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 366,
                        "src": "9478:22:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "id": 831,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 400,
                        "src": "9518:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "expression": {
                          "id": 832,
                          "name": "slot0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 379,
                          "src": "9545:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                          }
                        },
                        "id": 833,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "observationCardinality",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 368,
                        "src": "9545:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr",
                          "typeString": "uint32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 822,
                        "name": "observations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 424,
                        "src": "9348:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                          "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                        }
                      },
                      "id": 823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "observe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "9348:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint32_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                        "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint16) view returns (int56[] memory,uint160[] memory)"
                      }
                    },
                    "id": 834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9348:239:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$",
                      "typeString": "tuple(int56[] memory,uint160[] memory)"
                    }
                  },
                  "functionReturnParameters": 821,
                  "id": 835,
                  "nodeType": "Return",
                  "src": "9329:258:1"
                }
              ]
            },
            "documentation": {
              "id": 807,
              "nodeType": "StructuredDocumentation",
              "src": "9047:43:1",
              "text": "@inheritdoc IMoonwalkerPoolDerivedState"
            },
            "functionSelector": "883bdbfd",
            "id": 837,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 814,
                "modifierName": {
                  "id": 813,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "9198:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9198:14:1"
              }
            ],
            "name": "observe",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 812,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9181:8:1"
            },
            "parameters": {
              "id": 811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 810,
                  "mutability": "mutable",
                  "name": "secondsAgos",
                  "nodeType": "VariableDeclaration",
                  "scope": 837,
                  "src": "9112:29:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 808,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "9112:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 809,
                    "nodeType": "ArrayTypeName",
                    "src": "9112:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9111:31:1"
            },
            "returnParameters": {
              "id": 821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 817,
                  "mutability": "mutable",
                  "name": "tickCumulatives",
                  "nodeType": "VariableDeclaration",
                  "scope": 837,
                  "src": "9230:30:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr",
                    "typeString": "int56[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 815,
                      "name": "int56",
                      "nodeType": "ElementaryTypeName",
                      "src": "9230:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      }
                    },
                    "id": 816,
                    "nodeType": "ArrayTypeName",
                    "src": "9230:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr",
                      "typeString": "int56[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 820,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityCumulativeX128s",
                  "nodeType": "VariableDeclaration",
                  "scope": 837,
                  "src": "9262:51:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                    "typeString": "uint160[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 818,
                      "name": "uint160",
                      "nodeType": "ElementaryTypeName",
                      "src": "9262:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "id": 819,
                    "nodeType": "ArrayTypeName",
                    "src": "9262:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
                      "typeString": "uint160[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9229:85:1"
            },
            "scope": 2754,
            "src": "9095:499:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3196
            ],
            "body": {
              "id": 876,
              "nodeType": "Block",
              "src": "9796:507:1",
              "statements": [
                {
                  "assignments": [
                    849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 849,
                      "mutability": "mutable",
                      "name": "observationCardinalityNextOld",
                      "nodeType": "VariableDeclaration",
                      "scope": 876,
                      "src": "9806:36:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 848,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9806:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 852,
                  "initialValue": {
                    "expression": {
                      "id": 850,
                      "name": "slot0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 379,
                      "src": "9845:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_storage",
                        "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                      }
                    },
                    "id": 851,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "observationCardinalityNext",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 370,
                    "src": "9845:32:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9806:71:1"
                },
                {
                  "assignments": [
                    854
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 854,
                      "mutability": "mutable",
                      "name": "observationCardinalityNextNew",
                      "nodeType": "VariableDeclaration",
                      "scope": 876,
                      "src": "9904:36:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 853,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9904:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 860,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 857,
                        "name": "observationCardinalityNextOld",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 849,
                        "src": "9973:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "id": 858,
                        "name": "observationCardinalityNext",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 840,
                        "src": "10004:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 855,
                        "name": "observations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 424,
                        "src": "9955:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                          "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                        }
                      },
                      "id": 856,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "grow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4398,
                      "src": "9955:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint16_$_t_uint16_$returns$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                        "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint16) returns (uint16)"
                      }
                    },
                    "id": 859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9955:76:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9904:127:1"
                },
                {
                  "expression": {
                    "id": 865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 861,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "10041:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 863,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "observationCardinalityNext",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 370,
                      "src": "10041:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 864,
                      "name": "observationCardinalityNextNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 854,
                      "src": "10076:29:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "10041:64:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 866,
                  "nodeType": "ExpressionStatement",
                  "src": "10041:64:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 867,
                      "name": "observationCardinalityNextOld",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 849,
                      "src": "10119:29:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 868,
                      "name": "observationCardinalityNextNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 854,
                      "src": "10152:29:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "10119:62:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 875,
                  "nodeType": "IfStatement",
                  "src": "10115:181:1",
                  "trueBody": {
                    "eventCall": {
                      "arguments": [
                        {
                          "id": 871,
                          "name": "observationCardinalityNextOld",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 849,
                          "src": "10235:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "id": 872,
                          "name": "observationCardinalityNextNew",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 854,
                          "src": "10266:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "id": 870,
                        "name": "IncreaseObservationCardinalityNext",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3324,
                        "src": "10200:34:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_event_nonpayable$_t_uint16_$_t_uint16_$returns$__$",
                          "typeString": "function (uint16,uint16)"
                        }
                      },
                      "id": 873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10200:96:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 874,
                    "nodeType": "EmitStatement",
                    "src": "10195:101:1"
                  }
                }
              ]
            },
            "documentation": {
              "id": 838,
              "nodeType": "StructuredDocumentation",
              "src": "9600:38:1",
              "text": "@inheritdoc IMoonwalkerPoolActions"
            },
            "functionSelector": "32148f67",
            "id": 877,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 844,
                "modifierName": {
                  "id": 843,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "9764:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9764:4:1"
              },
              {
                "id": 846,
                "modifierName": {
                  "id": 845,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "9777:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9777:14:1"
              }
            ],
            "name": "increaseObservationCardinalityNext",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 842,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9747:8:1"
            },
            "parameters": {
              "id": 841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 840,
                  "mutability": "mutable",
                  "name": "observationCardinalityNext",
                  "nodeType": "VariableDeclaration",
                  "scope": 877,
                  "src": "9687:33:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 839,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "9687:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9686:35:1"
            },
            "returnParameters": {
              "id": 847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9796:0:1"
            },
            "scope": 2754,
            "src": "9643:660:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3110
            ],
            "body": {
              "id": 926,
              "nodeType": "Block",
              "src": "10468:561:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "id": 888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 885,
                            "name": "slot0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 379,
                            "src": "10486:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slot0_$375_storage",
                              "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                            }
                          },
                          "id": 886,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrtPriceX96",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 362,
                          "src": "10486:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10508:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10486:23:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4149",
                        "id": 889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10511:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85",
                          "typeString": "literal_string \"AI\""
                        },
                        "value": "AI"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85",
                          "typeString": "literal_string \"AI\""
                        }
                      ],
                      "id": 884,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10478:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10478:38:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 891,
                  "nodeType": "ExpressionStatement",
                  "src": "10478:38:1"
                },
                {
                  "assignments": [
                    893
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 893,
                      "mutability": "mutable",
                      "name": "tick",
                      "nodeType": "VariableDeclaration",
                      "scope": 926,
                      "src": "10527:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 892,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "10527:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 898,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 896,
                        "name": "sqrtPriceX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 880,
                        "src": "10568:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "expression": {
                        "id": 894,
                        "name": "TickMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7170,
                        "src": "10540:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                          "typeString": "type(library TickMath)"
                        }
                      },
                      "id": 895,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTickAtSqrtRatio",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7169,
                      "src": "10540:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$",
                        "typeString": "function (uint160) pure returns (int24)"
                      }
                    },
                    "id": 897,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10540:41:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10527:54:1"
                },
                {
                  "assignments": [
                    900,
                    902
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 900,
                      "mutability": "mutable",
                      "name": "cardinality",
                      "nodeType": "VariableDeclaration",
                      "scope": 926,
                      "src": "10593:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 899,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "10593:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 902,
                      "mutability": "mutable",
                      "name": "cardinalityNext",
                      "nodeType": "VariableDeclaration",
                      "scope": 926,
                      "src": "10613:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 901,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "10613:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 908,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 905,
                          "name": "_blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 540,
                          "src": "10663:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                            "typeString": "function () view returns (uint32)"
                          }
                        },
                        "id": 906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10663:17:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "id": 903,
                        "name": "observations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 424,
                        "src": "10639:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                          "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                        }
                      },
                      "id": 904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4269,
                      "src": "10639:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint32_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                        "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32) returns (uint16,uint16)"
                      }
                    },
                    "id": 907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10639:42:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$",
                      "typeString": "tuple(uint16,uint16)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10592:89:1"
                },
                {
                  "expression": {
                    "id": 919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 909,
                      "name": "slot0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 379,
                      "src": "10692:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_storage",
                        "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 911,
                          "name": "sqrtPriceX96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 880,
                          "src": "10734:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        {
                          "id": 912,
                          "name": "tick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 893,
                          "src": "10766:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        {
                          "hexValue": "30",
                          "id": 913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10802:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "id": 914,
                          "name": "cardinality",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 900,
                          "src": "10841:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "id": 915,
                          "name": "cardinalityNext",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 902,
                          "src": "10894:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "hexValue": "30",
                          "id": 916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10936:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "hexValue": "74727565",
                          "id": 917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10961:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 910,
                        "name": "Slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 375,
                        "src": "10700:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Slot0_$375_storage_ptr_$",
                          "typeString": "type(struct MoonwalkerPool.Slot0 storage pointer)"
                        }
                      },
                      "id": 918,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "sqrtPriceX96",
                        "tick",
                        "observationIndex",
                        "observationCardinality",
                        "observationCardinalityNext",
                        "feeProtocol",
                        "unlocked"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "10700:276:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                        "typeString": "struct MoonwalkerPool.Slot0 memory"
                      }
                    },
                    "src": "10692:284:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slot0_$375_storage",
                      "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                    }
                  },
                  "id": 920,
                  "nodeType": "ExpressionStatement",
                  "src": "10692:284:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 922,
                        "name": "sqrtPriceX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 880,
                        "src": "11003:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "id": 923,
                        "name": "tick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 893,
                        "src": "11017:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      ],
                      "id": 921,
                      "name": "Initialize",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3238,
                      "src": "10992:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint160_$_t_int24_$returns$__$",
                        "typeString": "function (uint160,int24)"
                      }
                    },
                    "id": 924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10992:30:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 925,
                  "nodeType": "EmitStatement",
                  "src": "10987:35:1"
                }
              ]
            },
            "documentation": {
              "id": 878,
              "nodeType": "StructuredDocumentation",
              "src": "10309:94:1",
              "text": "@inheritdoc IMoonwalkerPoolActions\n @dev not locked because it initializes unlocked"
            },
            "functionSelector": "f637731d",
            "id": 927,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 882,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10459:8:1"
            },
            "parameters": {
              "id": 881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 880,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96",
                  "nodeType": "VariableDeclaration",
                  "scope": 927,
                  "src": "10428:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 879,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "10428:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10427:22:1"
            },
            "returnParameters": {
              "id": 883,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10468:0:1"
            },
            "scope": 2754,
            "src": "10408:621:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "canonicalName": "MoonwalkerPool.ModifyPositionParams",
            "id": 936,
            "members": [
              {
                "constant": false,
                "id": 929,
                "mutability": "mutable",
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 936,
                "src": "11119:13:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 928,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "11119:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 931,
                "mutability": "mutable",
                "name": "tickLower",
                "nodeType": "VariableDeclaration",
                "scope": 936,
                "src": "11194:15:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                },
                "typeName": {
                  "id": 930,
                  "name": "int24",
                  "nodeType": "ElementaryTypeName",
                  "src": "11194:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 933,
                "mutability": "mutable",
                "name": "tickUpper",
                "nodeType": "VariableDeclaration",
                "scope": 936,
                "src": "11219:15:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                },
                "typeName": {
                  "id": 932,
                  "name": "int24",
                  "nodeType": "ElementaryTypeName",
                  "src": "11219:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 935,
                "mutability": "mutable",
                "name": "liquidityDelta",
                "nodeType": "VariableDeclaration",
                "scope": 936,
                "src": "11279:21:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                },
                "typeName": {
                  "id": 934,
                  "name": "int128",
                  "nodeType": "ElementaryTypeName",
                  "src": "11279:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ModifyPositionParams",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "11035:272:1",
            "visibility": "public"
          },
          {
            "body": {
              "id": 1098,
              "nodeType": "Block",
              "src": "12009:2582:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 951,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 939,
                          "src": "12030:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                          }
                        },
                        "id": 952,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tickLower",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 931,
                        "src": "12030:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "expression": {
                          "id": 953,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 939,
                          "src": "12048:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                          }
                        },
                        "id": 954,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tickUpper",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 933,
                        "src": "12048:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      ],
                      "id": 950,
                      "name": "checkTicks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 527,
                      "src": "12019:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int24_$_t_int24_$returns$__$",
                        "typeString": "function (int24,int24) pure"
                      }
                    },
                    "id": 955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12019:46:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 956,
                  "nodeType": "ExpressionStatement",
                  "src": "12019:46:1"
                },
                {
                  "assignments": [
                    958
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 958,
                      "mutability": "mutable",
                      "name": "_slot0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1098,
                      "src": "12076:19:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                        "typeString": "struct MoonwalkerPool.Slot0"
                      },
                      "typeName": {
                        "id": 957,
                        "name": "Slot0",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 375,
                        "src": "12076:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage_ptr",
                          "typeString": "struct MoonwalkerPool.Slot0"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 960,
                  "initialValue": {
                    "id": 959,
                    "name": "slot0",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 379,
                    "src": "12098:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slot0_$375_storage",
                      "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12076:27:1"
                },
                {
                  "expression": {
                    "id": 974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 961,
                      "name": "position",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 944,
                      "src": "12144:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info storage pointer"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 963,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "12184:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                            }
                          },
                          "id": 964,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 929,
                          "src": "12184:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "expression": {
                            "id": 965,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "12210:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                            }
                          },
                          "id": 966,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tickLower",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 931,
                          "src": "12210:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        {
                          "expression": {
                            "id": 967,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "12240:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                            }
                          },
                          "id": 968,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tickUpper",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 933,
                          "src": "12240:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        {
                          "expression": {
                            "id": 969,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "12270:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                            }
                          },
                          "id": 970,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "liquidityDelta",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 935,
                          "src": "12270:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        {
                          "expression": {
                            "id": 971,
                            "name": "_slot0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 958,
                            "src": "12305:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                              "typeString": "struct MoonwalkerPool.Slot0 memory"
                            }
                          },
                          "id": 972,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tick",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 364,
                          "src": "12305:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        ],
                        "id": 962,
                        "name": "_updatePosition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1262,
                        "src": "12155:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$_t_int24_$returns$_t_struct$_Info_$4924_storage_ptr_$",
                          "typeString": "function (address,int24,int24,int128,int24) returns (struct Position.Info storage pointer)"
                        }
                      },
                      "id": 973,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12155:171:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info storage pointer"
                      }
                    },
                    "src": "12144:182:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                      "typeString": "struct Position.Info storage pointer"
                    }
                  },
                  "id": 975,
                  "nodeType": "ExpressionStatement",
                  "src": "12144:182:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "id": 979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 976,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 939,
                        "src": "12341:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                        }
                      },
                      "id": 977,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "liquidityDelta",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 935,
                      "src": "12341:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12366:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12341:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1097,
                  "nodeType": "IfStatement",
                  "src": "12337:2248:1",
                  "trueBody": {
                    "id": 1096,
                    "nodeType": "Block",
                    "src": "12369:2216:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 980,
                              "name": "_slot0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 958,
                              "src": "12387:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                "typeString": "struct MoonwalkerPool.Slot0 memory"
                              }
                            },
                            "id": 981,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tick",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 364,
                            "src": "12387:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 982,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 939,
                              "src": "12401:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                              }
                            },
                            "id": 983,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tickLower",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 931,
                            "src": "12401:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "12387:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 1008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 1004,
                                "name": "_slot0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 958,
                                "src": "12925:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 1005,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 364,
                              "src": "12925:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "expression": {
                                "id": 1006,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 939,
                                "src": "12939:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                }
                              },
                              "id": 1007,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tickUpper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 933,
                              "src": "12939:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "12925:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 1093,
                            "nodeType": "Block",
                            "src": "14079:496:1",
                            "statements": [
                              {
                                "expression": {
                                  "id": 1091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1075,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 948,
                                    "src": "14326:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 1080,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 939,
                                              "src": "14415:6:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                              }
                                            },
                                            "id": 1081,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "tickLower",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 931,
                                            "src": "14415:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1078,
                                            "name": "TickMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7170,
                                            "src": "14387:8:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                              "typeString": "type(library TickMath)"
                                            }
                                          },
                                          "id": 1079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getSqrtRatioAtTick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7030,
                                          "src": "14387:27:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                            "typeString": "function (int24) pure returns (uint160)"
                                          }
                                        },
                                        "id": 1082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14387:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 1085,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 939,
                                              "src": "14482:6:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                              }
                                            },
                                            "id": 1086,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "tickUpper",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 933,
                                            "src": "14482:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1083,
                                            "name": "TickMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7170,
                                            "src": "14454:8:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                              "typeString": "type(library TickMath)"
                                            }
                                          },
                                          "id": 1084,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getSqrtRatioAtTick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7030,
                                          "src": "14454:27:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                            "typeString": "function (int24) pure returns (uint160)"
                                          }
                                        },
                                        "id": 1087,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14454:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1088,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 939,
                                          "src": "14521:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                          }
                                        },
                                        "id": 1089,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidityDelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 935,
                                        "src": "14521:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1076,
                                        "name": "SqrtPriceMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5666,
                                        "src": "14336:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$5666_$",
                                          "typeString": "type(library SqrtPriceMath)"
                                        }
                                      },
                                      "id": 1077,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAmount1Delta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5665,
                                      "src": "14336:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$",
                                        "typeString": "function (uint160,uint160,int128) pure returns (int256)"
                                      }
                                    },
                                    "id": 1090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14336:224:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "14326:234:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1092,
                                "nodeType": "ExpressionStatement",
                                "src": "14326:234:1"
                              }
                            ]
                          },
                          "id": 1094,
                          "nodeType": "IfStatement",
                          "src": "12921:1654:1",
                          "trueBody": {
                            "id": 1074,
                            "nodeType": "Block",
                            "src": "12957:1116:1",
                            "statements": [
                              {
                                "assignments": [
                                  1010
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1010,
                                    "mutability": "mutable",
                                    "name": "liquidityBefore",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1074,
                                    "src": "13034:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    "typeName": {
                                      "id": 1009,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13034:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1012,
                                "initialValue": {
                                  "id": 1011,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 400,
                                  "src": "13060:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "13034:35:1"
                              },
                              {
                                "expression": {
                                  "id": 1033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "components": [
                                      {
                                        "expression": {
                                          "id": 1013,
                                          "name": "slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 379,
                                          "src": "13160:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                          }
                                        },
                                        "id": 1015,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "observationIndex",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 366,
                                        "src": "13160:22:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1016,
                                          "name": "slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 379,
                                          "src": "13184:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                            "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                          }
                                        },
                                        "id": 1017,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "observationCardinality",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 368,
                                        "src": "13184:28:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      }
                                    ],
                                    "id": 1018,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "TupleExpression",
                                    "src": "13159:54:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$",
                                      "typeString": "tuple(uint16,uint16)"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 1021,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13256:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1022,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "observationIndex",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 366,
                                        "src": "13256:23:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 1023,
                                          "name": "_blockTimestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 540,
                                          "src": "13301:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                                            "typeString": "function () view returns (uint32)"
                                          }
                                        },
                                        "id": 1024,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13301:17:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1025,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13340:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1026,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "tick",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 364,
                                        "src": "13340:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      {
                                        "id": 1027,
                                        "name": "liquidityBefore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1010,
                                        "src": "13373:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1028,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13410:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1029,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "observationCardinality",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 368,
                                        "src": "13410:29:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1030,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13461:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1031,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "observationCardinalityNext",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 370,
                                        "src": "13461:33:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1019,
                                        "name": "observations",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 424,
                                        "src": "13216:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                                          "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                                        }
                                      },
                                      "id": 1020,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "write",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4350,
                                      "src": "13216:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                                        "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)"
                                      }
                                    },
                                    "id": 1032,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13216:296:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$",
                                      "typeString": "tuple(uint16,uint16)"
                                    }
                                  },
                                  "src": "13159:353:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1034,
                                "nodeType": "ExpressionStatement",
                                "src": "13159:353:1"
                              },
                              {
                                "expression": {
                                  "id": 1048,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1035,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 946,
                                    "src": "13531:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 1038,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13592:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1039,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sqrtPriceX96",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 362,
                                        "src": "13592:19:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 1042,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 939,
                                              "src": "13661:6:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                              }
                                            },
                                            "id": 1043,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "tickUpper",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 933,
                                            "src": "13661:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1040,
                                            "name": "TickMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7170,
                                            "src": "13633:8:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                              "typeString": "type(library TickMath)"
                                            }
                                          },
                                          "id": 1041,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getSqrtRatioAtTick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7030,
                                          "src": "13633:27:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                            "typeString": "function (int24) pure returns (uint160)"
                                          }
                                        },
                                        "id": 1044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13633:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1045,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 939,
                                          "src": "13700:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                          }
                                        },
                                        "id": 1046,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidityDelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 935,
                                        "src": "13700:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1036,
                                        "name": "SqrtPriceMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5666,
                                        "src": "13541:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$5666_$",
                                          "typeString": "type(library SqrtPriceMath)"
                                        }
                                      },
                                      "id": 1037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAmount0Delta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5623,
                                      "src": "13541:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$",
                                        "typeString": "function (uint160,uint160,int128) pure returns (int256)"
                                      }
                                    },
                                    "id": 1047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13541:198:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "13531:208:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1049,
                                "nodeType": "ExpressionStatement",
                                "src": "13531:208:1"
                              },
                              {
                                "expression": {
                                  "id": 1063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1050,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 948,
                                    "src": "13757:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 1055,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 939,
                                              "src": "13846:6:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                              }
                                            },
                                            "id": 1056,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "tickLower",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 931,
                                            "src": "13846:16:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1053,
                                            "name": "TickMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7170,
                                            "src": "13818:8:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                              "typeString": "type(library TickMath)"
                                            }
                                          },
                                          "id": 1054,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getSqrtRatioAtTick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7030,
                                          "src": "13818:27:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                            "typeString": "function (int24) pure returns (uint160)"
                                          }
                                        },
                                        "id": 1057,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13818:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1058,
                                          "name": "_slot0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 958,
                                          "src": "13885:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                                          }
                                        },
                                        "id": 1059,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sqrtPriceX96",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 362,
                                        "src": "13885:19:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1060,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 939,
                                          "src": "13926:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                          }
                                        },
                                        "id": 1061,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidityDelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 935,
                                        "src": "13926:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1051,
                                        "name": "SqrtPriceMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5666,
                                        "src": "13767:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$5666_$",
                                          "typeString": "type(library SqrtPriceMath)"
                                        }
                                      },
                                      "id": 1052,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAmount1Delta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5665,
                                      "src": "13767:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$",
                                        "typeString": "function (uint160,uint160,int128) pure returns (int256)"
                                      }
                                    },
                                    "id": 1062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13767:198:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "13757:208:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1064,
                                "nodeType": "ExpressionStatement",
                                "src": "13757:208:1"
                              },
                              {
                                "expression": {
                                  "id": 1072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1065,
                                    "name": "liquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 400,
                                    "src": "13984:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 1068,
                                        "name": "liquidityBefore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1010,
                                        "src": "14019:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1069,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 939,
                                          "src": "14036:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                          }
                                        },
                                        "id": 1070,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidityDelta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 935,
                                        "src": "14036:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1066,
                                        "name": "LiquidityMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4042,
                                        "src": "13996:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4042_$",
                                          "typeString": "type(library LiquidityMath)"
                                        }
                                      },
                                      "id": 1067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "addDelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4041,
                                      "src": "13996:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$",
                                        "typeString": "function (uint128,int128) pure returns (uint128)"
                                      }
                                    },
                                    "id": 1071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13996:62:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "13984:74:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "id": 1073,
                                "nodeType": "ExpressionStatement",
                                "src": "13984:74:1"
                              }
                            ]
                          }
                        },
                        "id": 1095,
                        "nodeType": "IfStatement",
                        "src": "12383:2192:1",
                        "trueBody": {
                          "id": 1003,
                          "nodeType": "Block",
                          "src": "12419:496:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 1001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 985,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 946,
                                  "src": "12666:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 990,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 939,
                                            "src": "12755:6:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                            }
                                          },
                                          "id": 991,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tickLower",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 931,
                                          "src": "12755:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        ],
                                        "expression": {
                                          "id": 988,
                                          "name": "TickMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7170,
                                          "src": "12727:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                            "typeString": "type(library TickMath)"
                                          }
                                        },
                                        "id": 989,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getSqrtRatioAtTick",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7030,
                                        "src": "12727:27:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                          "typeString": "function (int24) pure returns (uint160)"
                                        }
                                      },
                                      "id": 992,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12727:45:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 995,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 939,
                                            "src": "12822:6:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                            }
                                          },
                                          "id": 996,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tickUpper",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 933,
                                          "src": "12822:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        ],
                                        "expression": {
                                          "id": 993,
                                          "name": "TickMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7170,
                                          "src": "12794:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                            "typeString": "type(library TickMath)"
                                          }
                                        },
                                        "id": 994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getSqrtRatioAtTick",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7030,
                                        "src": "12794:27:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                          "typeString": "function (int24) pure returns (uint160)"
                                        }
                                      },
                                      "id": 997,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12794:45:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 998,
                                        "name": "params",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 939,
                                        "src": "12861:6:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                        }
                                      },
                                      "id": 999,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "liquidityDelta",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 935,
                                      "src": "12861:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    ],
                                    "expression": {
                                      "id": 986,
                                      "name": "SqrtPriceMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5666,
                                      "src": "12676:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$5666_$",
                                        "typeString": "type(library SqrtPriceMath)"
                                      }
                                    },
                                    "id": 987,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getAmount0Delta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5623,
                                    "src": "12676:29:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$",
                                      "typeString": "function (uint160,uint160,int128) pure returns (int256)"
                                    }
                                  },
                                  "id": 1000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12676:224:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "12666:234:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1002,
                              "nodeType": "ExpressionStatement",
                              "src": "12666:234:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 937,
              "nodeType": "StructuredDocumentation",
              "src": "11313:460:1",
              "text": "@dev Effect some changes to a position\n @param params the position details and the change to the position's liquidity to effect\n @return position a storage pointer referencing the position with the given owner and tick range\n @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient"
            },
            "id": 1099,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 942,
                "modifierName": {
                  "id": 941,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "11863:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11863:14:1"
              }
            ],
            "name": "_modifyPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 939,
                  "mutability": "mutable",
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 1099,
                  "src": "11803:34:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                    "typeString": "struct MoonwalkerPool.ModifyPositionParams"
                  },
                  "typeName": {
                    "id": 938,
                    "name": "ModifyPositionParams",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 936,
                    "src": "11803:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ModifyPositionParams_$936_storage_ptr",
                      "typeString": "struct MoonwalkerPool.ModifyPositionParams"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11802:36:1"
            },
            "returnParameters": {
              "id": 949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 944,
                  "mutability": "mutable",
                  "name": "position",
                  "nodeType": "VariableDeclaration",
                  "scope": 1099,
                  "src": "11908:30:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                    "typeString": "struct Position.Info"
                  },
                  "typeName": {
                    "id": 943,
                    "name": "Position.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4924,
                    "src": "11908:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                      "typeString": "struct Position.Info"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 946,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1099,
                  "src": "11952:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11952:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1099,
                  "src": "11980:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11980:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11894:110:1"
            },
            "scope": 2754,
            "src": "11778:2813:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1261,
              "nodeType": "Block",
              "src": "15119:2313:1",
              "statements": [
                {
                  "expression": {
                    "id": 1122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1115,
                      "name": "position",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1113,
                      "src": "15129:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info storage pointer"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1118,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1102,
                          "src": "15154:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 1119,
                          "name": "tickLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1104,
                          "src": "15161:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        {
                          "id": 1120,
                          "name": "tickUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "15172:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        ],
                        "expression": {
                          "id": 1116,
                          "name": "positions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "15140:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$",
                            "typeString": "mapping(bytes32 => struct Position.Info storage ref)"
                          }
                        },
                        "id": 1117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4954,
                        "src": "15140:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$4924_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$_$",
                          "typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
                        }
                      },
                      "id": 1121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15140:42:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info storage pointer"
                      }
                    },
                    "src": "15129:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                      "typeString": "struct Position.Info storage pointer"
                    }
                  },
                  "id": 1123,
                  "nodeType": "ExpressionStatement",
                  "src": "15129:53:1"
                },
                {
                  "assignments": [
                    1125
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1125,
                      "mutability": "mutable",
                      "name": "_feeGrowthGlobal0X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "15193:29:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1124,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15193:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1127,
                  "initialValue": {
                    "id": 1126,
                    "name": "feeGrowthGlobal0X128",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 383,
                    "src": "15225:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15193:52:1"
                },
                {
                  "assignments": [
                    1129
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1129,
                      "mutability": "mutable",
                      "name": "_feeGrowthGlobal1X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "15285:29:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1128,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15285:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1131,
                  "initialValue": {
                    "id": 1130,
                    "name": "feeGrowthGlobal1X128",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 387,
                    "src": "15317:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15285:52:1"
                },
                {
                  "assignments": [
                    1133
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1133,
                      "mutability": "mutable",
                      "name": "flippedLower",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "15427:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1132,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15427:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1134,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15427:17:1"
                },
                {
                  "assignments": [
                    1136
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1136,
                      "mutability": "mutable",
                      "name": "flippedUpper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "15454:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1135,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15454:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1137,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15454:17:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "id": 1140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1138,
                      "name": "liquidityDelta",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1108,
                      "src": "15485:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15503:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15485:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1216,
                  "nodeType": "IfStatement",
                  "src": "15481:1402:1",
                  "trueBody": {
                    "id": 1215,
                    "nodeType": "Block",
                    "src": "15506:1377:1",
                    "statements": [
                      {
                        "assignments": [
                          1142
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1142,
                            "mutability": "mutable",
                            "name": "time",
                            "nodeType": "VariableDeclaration",
                            "scope": 1215,
                            "src": "15520:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 1141,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15520:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1145,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1143,
                            "name": "_blockTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 540,
                            "src": "15534:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                              "typeString": "function () view returns (uint32)"
                            }
                          },
                          "id": 1144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15534:17:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15520:31:1"
                      },
                      {
                        "assignments": [
                          1147,
                          1149
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1147,
                            "mutability": "mutable",
                            "name": "tickCumulative",
                            "nodeType": "VariableDeclaration",
                            "scope": 1215,
                            "src": "15566:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            },
                            "typeName": {
                              "id": 1146,
                              "name": "int56",
                              "nodeType": "ElementaryTypeName",
                              "src": "15566:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1149,
                            "mutability": "mutable",
                            "name": "secondsPerLiquidityCumulativeX128",
                            "nodeType": "VariableDeclaration",
                            "scope": 1215,
                            "src": "15588:41:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "typeName": {
                              "id": 1148,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "15588:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1162,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1152,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1142,
                              "src": "15697:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15723:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "id": 1154,
                                "name": "slot0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 379,
                                "src": "15746:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                  "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                }
                              },
                              "id": 1155,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 364,
                              "src": "15746:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "expression": {
                                "id": 1156,
                                "name": "slot0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 379,
                                "src": "15778:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                  "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                }
                              },
                              "id": 1157,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observationIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 366,
                              "src": "15778:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "id": 1158,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 400,
                              "src": "15822:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "expression": {
                                "id": 1159,
                                "name": "slot0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 379,
                                "src": "15853:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                  "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                }
                              },
                              "id": 1160,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observationCardinality",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 368,
                              "src": "15853:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "id": 1150,
                              "name": "observations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 424,
                              "src": "15649:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                                "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                              }
                            },
                            "id": 1151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "observeSingle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4820,
                            "src": "15649:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                              "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                            }
                          },
                          "id": 1161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15649:250:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$",
                            "typeString": "tuple(int56,uint160)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15565:334:1"
                      },
                      {
                        "expression": {
                          "id": 1177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1163,
                            "name": "flippedLower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1133,
                            "src": "15914:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1166,
                                "name": "tickLower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1104,
                                "src": "15959:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1167,
                                "name": "tick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1110,
                                "src": "15986:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1168,
                                "name": "liquidityDelta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1108,
                                "src": "16008:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              },
                              {
                                "id": 1169,
                                "name": "_feeGrowthGlobal0X128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1125,
                                "src": "16040:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1170,
                                "name": "_feeGrowthGlobal1X128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1129,
                                "src": "16079:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1171,
                                "name": "secondsPerLiquidityCumulativeX128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1149,
                                "src": "16118:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 1172,
                                "name": "tickCumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1147,
                                "src": "16169:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              {
                                "id": 1173,
                                "name": "time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1142,
                                "src": "16201:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 1174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16223:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "id": 1175,
                                "name": "maxLiquidityPerTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 360,
                                "src": "16246:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "id": 1164,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 406,
                                "src": "15929:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                                  "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                                }
                              },
                              "id": 1165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "update",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6281,
                              "src": "15929:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                                "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)"
                              }
                            },
                            "id": 1176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15929:350:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15914:365:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1178,
                        "nodeType": "ExpressionStatement",
                        "src": "15914:365:1"
                      },
                      {
                        "expression": {
                          "id": 1193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1179,
                            "name": "flippedUpper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1136,
                            "src": "16293:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1182,
                                "name": "tickUpper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1106,
                                "src": "16338:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1183,
                                "name": "tick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1110,
                                "src": "16365:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1184,
                                "name": "liquidityDelta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1108,
                                "src": "16387:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              },
                              {
                                "id": 1185,
                                "name": "_feeGrowthGlobal0X128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1125,
                                "src": "16419:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1186,
                                "name": "_feeGrowthGlobal1X128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1129,
                                "src": "16458:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1187,
                                "name": "secondsPerLiquidityCumulativeX128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1149,
                                "src": "16497:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 1188,
                                "name": "tickCumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1147,
                                "src": "16548:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              {
                                "id": 1189,
                                "name": "time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1142,
                                "src": "16580:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "hexValue": "74727565",
                                "id": 1190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16602:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "id": 1191,
                                "name": "maxLiquidityPerTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 360,
                                "src": "16624:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "id": 1180,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 406,
                                "src": "16308:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                                  "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                                }
                              },
                              "id": 1181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "update",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6281,
                              "src": "16308:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                                "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)"
                              }
                            },
                            "id": 1192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16308:349:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16293:364:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1194,
                        "nodeType": "ExpressionStatement",
                        "src": "16293:364:1"
                      },
                      {
                        "condition": {
                          "id": 1195,
                          "name": "flippedLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1133,
                          "src": "16676:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1204,
                        "nodeType": "IfStatement",
                        "src": "16672:94:1",
                        "trueBody": {
                          "id": 1203,
                          "nodeType": "Block",
                          "src": "16690:76:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1199,
                                    "name": "tickLower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1104,
                                    "src": "16728:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "id": 1200,
                                    "name": "tickSpacing",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 356,
                                    "src": "16739:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1196,
                                    "name": "tickBitmap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 412,
                                    "src": "16708:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
                                      "typeString": "mapping(int16 => uint256)"
                                    }
                                  },
                                  "id": 1198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "flipTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6455,
                                  "src": "16708:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$",
                                    "typeString": "function (mapping(int16 => uint256),int24,int24)"
                                  }
                                },
                                "id": 1201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16708:43:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1202,
                              "nodeType": "ExpressionStatement",
                              "src": "16708:43:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 1205,
                          "name": "flippedUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "16783:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1214,
                        "nodeType": "IfStatement",
                        "src": "16779:94:1",
                        "trueBody": {
                          "id": 1213,
                          "nodeType": "Block",
                          "src": "16797:76:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1209,
                                    "name": "tickUpper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1106,
                                    "src": "16835:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "id": 1210,
                                    "name": "tickSpacing",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 356,
                                    "src": "16846:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1206,
                                    "name": "tickBitmap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 412,
                                    "src": "16815:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
                                      "typeString": "mapping(int16 => uint256)"
                                    }
                                  },
                                  "id": 1208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "flipTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6455,
                                  "src": "16815:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$",
                                    "typeString": "function (mapping(int16 => uint256),int24,int24)"
                                  }
                                },
                                "id": 1211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16815:43:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1212,
                              "nodeType": "ExpressionStatement",
                              "src": "16815:43:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1218,
                    1220
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1218,
                      "mutability": "mutable",
                      "name": "feeGrowthInside0X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "16894:28:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1217,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16894:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1220,
                      "mutability": "mutable",
                      "name": "feeGrowthInside1X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "16924:28:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1219,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16924:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1229,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1223,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "16993:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1224,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "17004:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1225,
                        "name": "tick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1110,
                        "src": "17015:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1226,
                        "name": "_feeGrowthGlobal0X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1125,
                        "src": "17021:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1227,
                        "name": "_feeGrowthGlobal1X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1129,
                        "src": "17044:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 1221,
                        "name": "ticks",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 406,
                        "src": "16968:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                          "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                        }
                      },
                      "id": 1222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getFeeGrowthInside",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6131,
                      "src": "16968:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$_t_int24_$_t_int24_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                        "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int24,uint256,uint256) view returns (uint256,uint256)"
                      }
                    },
                    "id": 1228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16968:98:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16893:173:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1233,
                        "name": "liquidityDelta",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1108,
                        "src": "17093:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      {
                        "id": 1234,
                        "name": "feeGrowthInside0X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1218,
                        "src": "17109:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1235,
                        "name": "feeGrowthInside1X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1220,
                        "src": "17131:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 1230,
                        "name": "position",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1113,
                        "src": "17077:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                          "typeString": "struct Position.Info storage pointer"
                        }
                      },
                      "id": 1232,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5079,
                      "src": "17077:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$4924_storage_ptr_$_t_int128_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Info_$4924_storage_ptr_$",
                        "typeString": "function (struct Position.Info storage pointer,int128,uint256,uint256)"
                      }
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17077:75:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1237,
                  "nodeType": "ExpressionStatement",
                  "src": "17077:75:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "id": 1240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1238,
                      "name": "liquidityDelta",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1108,
                      "src": "17223:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17240:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17223:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1260,
                  "nodeType": "IfStatement",
                  "src": "17219:207:1",
                  "trueBody": {
                    "id": 1259,
                    "nodeType": "Block",
                    "src": "17243:183:1",
                    "statements": [
                      {
                        "condition": {
                          "id": 1241,
                          "name": "flippedLower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1133,
                          "src": "17261:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1249,
                        "nodeType": "IfStatement",
                        "src": "17257:73:1",
                        "trueBody": {
                          "id": 1248,
                          "nodeType": "Block",
                          "src": "17275:55:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1245,
                                    "name": "tickLower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1104,
                                    "src": "17305:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1242,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 406,
                                    "src": "17293:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                                      "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                                    }
                                  },
                                  "id": 1244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "clear",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6297,
                                  "src": "17293:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                                    "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24)"
                                  }
                                },
                                "id": 1246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17293:22:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1247,
                              "nodeType": "ExpressionStatement",
                              "src": "17293:22:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 1250,
                          "name": "flippedUpper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "17347:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1258,
                        "nodeType": "IfStatement",
                        "src": "17343:73:1",
                        "trueBody": {
                          "id": 1257,
                          "nodeType": "Block",
                          "src": "17361:55:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1254,
                                    "name": "tickUpper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1106,
                                    "src": "17391:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1251,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 406,
                                    "src": "17379:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                                      "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                                    }
                                  },
                                  "id": 1253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "clear",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6297,
                                  "src": "17379:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                                    "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24)"
                                  }
                                },
                                "id": 1255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17379:22:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1256,
                              "nodeType": "ExpressionStatement",
                              "src": "17379:22:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1100,
              "nodeType": "StructuredDocumentation",
              "src": "14597:313:1",
              "text": "@dev Gets and updates a position with the given liquidity delta\n @param owner the owner of the position\n @param tickLower the lower tick of the position's tick range\n @param tickUpper the upper tick of the position's tick range\n @param tick the current tick, passed to avoid sloads"
            },
            "id": 1262,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_updatePosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1102,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "14949:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14949:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1104,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "14972:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1103,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "14972:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1106,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "14997:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1105,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "14997:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1108,
                  "mutability": "mutable",
                  "name": "liquidityDelta",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "15022:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 1107,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "15022:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1110,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "15053:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1109,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "15053:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14939:130:1"
            },
            "returnParameters": {
              "id": 1114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1113,
                  "mutability": "mutable",
                  "name": "position",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "15087:30:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                    "typeString": "struct Position.Info"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "Position.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4924,
                    "src": "15087:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                      "typeString": "struct Position.Info"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15086:32:1"
            },
            "scope": 2754,
            "src": "14915:2517:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              3128
            ],
            "body": {
              "id": 1396,
              "nodeType": "Block",
              "src": "17767:974:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 1286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1284,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1271,
                          "src": "17785:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17794:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "17785:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1283,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "17777:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17777:19:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1288,
                  "nodeType": "ExpressionStatement",
                  "src": "17777:19:1"
                },
                {
                  "assignments": [
                    null,
                    1290,
                    1292
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 1290,
                      "mutability": "mutable",
                      "name": "amount0Int",
                      "nodeType": "VariableDeclaration",
                      "scope": 1396,
                      "src": "17809:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 1289,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17809:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1292,
                      "mutability": "mutable",
                      "name": "amount1Int",
                      "nodeType": "VariableDeclaration",
                      "scope": 1396,
                      "src": "17828:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 1291,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17828:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1306,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1295,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "17944:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1296,
                            "name": "tickLower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1267,
                            "src": "17986:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          {
                            "id": 1297,
                            "name": "tickUpper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1269,
                            "src": "18028:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1300,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1271,
                                    "src": "18082:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 1299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "18075:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1298,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18075:6:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18075:14:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toInt128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5125,
                              "src": "18075:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (int128)"
                              }
                            },
                            "id": 1303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18075:25:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "id": 1294,
                          "name": "ModifyPositionParams",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 936,
                          "src": "17894:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ModifyPositionParams_$936_storage_ptr_$",
                            "typeString": "type(struct MoonwalkerPool.ModifyPositionParams storage pointer)"
                          }
                        },
                        "id": 1304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "owner",
                          "tickLower",
                          "tickUpper",
                          "liquidityDelta"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "17894:225:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                        }
                      ],
                      "id": 1293,
                      "name": "_modifyPosition",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1099,
                      "src": "17861:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$936_memory_ptr_$returns$_t_struct$_Info_$4924_storage_ptr_$_t_int256_$_t_int256_$",
                        "typeString": "function (struct MoonwalkerPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)"
                      }
                    },
                    "id": 1305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17861:272:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Info_$4924_storage_ptr_$_t_int256_$_t_int256_$",
                      "typeString": "tuple(struct Position.Info storage pointer,int256,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17806:327:1"
                },
                {
                  "expression": {
                    "id": 1312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1307,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1279,
                      "src": "18144:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1310,
                          "name": "amount0Int",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1290,
                          "src": "18162:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "18154:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 1308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18154:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18154:19:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18144:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1313,
                  "nodeType": "ExpressionStatement",
                  "src": "18144:29:1"
                },
                {
                  "expression": {
                    "id": 1319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1314,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1281,
                      "src": "18183:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1317,
                          "name": "amount1Int",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1292,
                          "src": "18201:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "18193:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 1315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18193:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18193:19:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18183:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1320,
                  "nodeType": "ExpressionStatement",
                  "src": "18183:29:1"
                },
                {
                  "assignments": [
                    1322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1322,
                      "mutability": "mutable",
                      "name": "balance0Before",
                      "nodeType": "VariableDeclaration",
                      "scope": 1396,
                      "src": "18223:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18223:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1323,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18223:22:1"
                },
                {
                  "assignments": [
                    1325
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1325,
                      "mutability": "mutable",
                      "name": "balance1Before",
                      "nodeType": "VariableDeclaration",
                      "scope": 1396,
                      "src": "18255:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1324,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18255:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1326,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18255:22:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1327,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1279,
                      "src": "18291:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18301:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18291:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1335,
                  "nodeType": "IfStatement",
                  "src": "18287:44:1",
                  "trueBody": {
                    "expression": {
                      "id": 1333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 1330,
                        "name": "balance0Before",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1322,
                        "src": "18304:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1331,
                          "name": "balance0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 582,
                          "src": "18321:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18321:10:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18304:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1334,
                    "nodeType": "ExpressionStatement",
                    "src": "18304:27:1"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1336,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1281,
                      "src": "18345:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18355:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18345:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1344,
                  "nodeType": "IfStatement",
                  "src": "18341:44:1",
                  "trueBody": {
                    "expression": {
                      "id": 1342,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 1339,
                        "name": "balance1Before",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1325,
                        "src": "18358:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1340,
                          "name": "balance1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 624,
                          "src": "18375:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18375:10:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18358:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1343,
                    "nodeType": "ExpressionStatement",
                    "src": "18358:27:1"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1350,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1279,
                        "src": "18454:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1351,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "18463:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1352,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1273,
                        "src": "18472:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1346,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "18419:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "18419:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 1345,
                          "name": "IMoonwalkerMintCallback",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3087,
                          "src": "18395:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMoonwalkerMintCallback_$3087_$",
                            "typeString": "type(contract IMoonwalkerMintCallback)"
                          }
                        },
                        "id": 1348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18395:35:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMoonwalkerMintCallback_$3087",
                          "typeString": "contract IMoonwalkerMintCallback"
                        }
                      },
                      "id": 1349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "moonwalkerMintCallback",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3086,
                      "src": "18395:58:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 1353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18395:82:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1354,
                  "nodeType": "ExpressionStatement",
                  "src": "18395:82:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1355,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1279,
                      "src": "18491:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18501:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18491:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1369,
                  "nodeType": "IfStatement",
                  "src": "18487:73:1",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 1361,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "18531:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 1359,
                                "name": "balance0Before",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1322,
                                "src": "18512:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4067,
                              "src": "18512:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18512:27:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1363,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 582,
                              "src": "18543:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 1364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18543:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18512:41:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "hexValue": "4d30",
                          "id": 1366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18555:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7",
                            "typeString": "literal_string \"M0\""
                          },
                          "value": "M0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7",
                            "typeString": "literal_string \"M0\""
                          }
                        ],
                        "id": 1358,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          4294967278,
                          4294967278
                        ],
                        "referencedDeclaration": 4294967278,
                        "src": "18504:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 1367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18504:56:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1368,
                    "nodeType": "ExpressionStatement",
                    "src": "18504:56:1"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1370,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1281,
                      "src": "18574:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18584:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18574:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1384,
                  "nodeType": "IfStatement",
                  "src": "18570:73:1",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 1376,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "18614:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 1374,
                                "name": "balance1Before",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1325,
                                "src": "18595:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4067,
                              "src": "18595:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18595:27:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1378,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "18626:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 1379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18626:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18595:41:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "hexValue": "4d31",
                          "id": 1381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18638:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de",
                            "typeString": "literal_string \"M1\""
                          },
                          "value": "M1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de",
                            "typeString": "literal_string \"M1\""
                          }
                        ],
                        "id": 1373,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          4294967278,
                          4294967278
                        ],
                        "referencedDeclaration": 4294967278,
                        "src": "18587:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 1382,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18587:56:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1383,
                    "nodeType": "ExpressionStatement",
                    "src": "18587:56:1"
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1386,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "18664:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "18664:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1388,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1265,
                        "src": "18676:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1389,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1267,
                        "src": "18687:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1390,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1269,
                        "src": "18698:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1391,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1271,
                        "src": "18709:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "id": 1392,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1279,
                        "src": "18717:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1393,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "18726:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1385,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3255,
                      "src": "18659:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,int24,int24,uint128,uint256,uint256)"
                      }
                    },
                    "id": 1394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18659:75:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1395,
                  "nodeType": "EmitStatement",
                  "src": "18654:80:1"
                }
              ]
            },
            "documentation": {
              "id": 1263,
              "nodeType": "StructuredDocumentation",
              "src": "17438:108:1",
              "text": "@inheritdoc IMoonwalkerPoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition"
            },
            "functionSelector": "3c8a7d8d",
            "id": 1397,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1277,
                "modifierName": {
                  "id": 1276,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "17719:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "17719:4:1"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1275,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17710:8:1"
            },
            "parameters": {
              "id": 1274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1265,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17574:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1264,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17574:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1267,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17601:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1266,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "17601:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1269,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17626:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1268,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "17626:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1271,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17651:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1270,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "17651:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1273,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17675:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1272,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17675:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17564:136:1"
            },
            "returnParameters": {
              "id": 1282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1279,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17733:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17733:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1281,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1397,
                  "src": "17750:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17750:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17732:34:1"
            },
            "scope": 2754,
            "src": "17551:1190:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3146
            ],
            "body": {
              "id": 1500,
              "nodeType": "Block",
              "src": "19024:801:1",
              "statements": [
                {
                  "assignments": [
                    1421
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1421,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 1500,
                      "src": "19146:30:1",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info"
                      },
                      "typeName": {
                        "id": 1420,
                        "name": "Position.Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4924,
                        "src": "19146:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                          "typeString": "struct Position.Info"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1429,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1424,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "19193:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19193:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1426,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1402,
                        "src": "19205:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1427,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1404,
                        "src": "19216:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      ],
                      "expression": {
                        "id": 1422,
                        "name": "positions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 418,
                        "src": "19179:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$",
                          "typeString": "mapping(bytes32 => struct Position.Info storage ref)"
                        }
                      },
                      "id": 1423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "get",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4954,
                      "src": "19179:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$4924_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$4924_storage_$_$",
                        "typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
                      }
                    },
                    "id": 1428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19179:47:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                      "typeString": "struct Position.Info storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19146:80:1"
                },
                {
                  "expression": {
                    "id": 1439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1430,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "19237:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 1434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1431,
                          "name": "amount0Requested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1406,
                          "src": "19247:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "expression": {
                            "id": 1432,
                            "name": "position",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1421,
                            "src": "19266:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                              "typeString": "struct Position.Info storage pointer"
                            }
                          },
                          "id": 1433,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensOwed0",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4921,
                          "src": "19266:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "19247:39:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "id": 1437,
                        "name": "amount0Requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1406,
                        "src": "19312:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 1438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "19247:81:1",
                      "trueExpression": {
                        "expression": {
                          "id": 1435,
                          "name": "position",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1421,
                          "src": "19289:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                            "typeString": "struct Position.Info storage pointer"
                          }
                        },
                        "id": 1436,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokensOwed0",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4921,
                        "src": "19289:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "19237:91:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 1440,
                  "nodeType": "ExpressionStatement",
                  "src": "19237:91:1"
                },
                {
                  "expression": {
                    "id": 1450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1441,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1416,
                      "src": "19338:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 1445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1442,
                          "name": "amount1Requested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1408,
                          "src": "19348:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "expression": {
                            "id": 1443,
                            "name": "position",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1421,
                            "src": "19367:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                              "typeString": "struct Position.Info storage pointer"
                            }
                          },
                          "id": 1444,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensOwed1",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4923,
                          "src": "19367:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "19348:39:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "id": 1448,
                        "name": "amount1Requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1408,
                        "src": "19413:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 1449,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "19348:81:1",
                      "trueExpression": {
                        "expression": {
                          "id": 1446,
                          "name": "position",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1421,
                          "src": "19390:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                            "typeString": "struct Position.Info storage pointer"
                          }
                        },
                        "id": 1447,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokensOwed1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4923,
                        "src": "19390:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "19338:91:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 1451,
                  "nodeType": "ExpressionStatement",
                  "src": "19338:91:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 1454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1452,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "19444:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19454:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19444:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1470,
                  "nodeType": "IfStatement",
                  "src": "19440:142:1",
                  "trueBody": {
                    "id": 1469,
                    "nodeType": "Block",
                    "src": "19457:125:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 1459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1455,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1421,
                              "src": "19471:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                "typeString": "struct Position.Info storage pointer"
                              }
                            },
                            "id": 1457,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tokensOwed0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4921,
                            "src": "19471:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 1458,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1414,
                            "src": "19495:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "19471:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 1460,
                        "nodeType": "ExpressionStatement",
                        "src": "19471:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1464,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 344,
                              "src": "19544:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1465,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1400,
                              "src": "19552:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1466,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1414,
                              "src": "19563:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "id": 1461,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7221,
                              "src": "19516:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7220,
                            "src": "19516:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19516:55:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1468,
                        "nodeType": "ExpressionStatement",
                        "src": "19516:55:1"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 1473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1471,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1416,
                      "src": "19595:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1472,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19605:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19595:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1489,
                  "nodeType": "IfStatement",
                  "src": "19591:142:1",
                  "trueBody": {
                    "id": 1488,
                    "nodeType": "Block",
                    "src": "19608:125:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 1478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1474,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1421,
                              "src": "19622:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                "typeString": "struct Position.Info storage pointer"
                              }
                            },
                            "id": 1476,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tokensOwed1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4923,
                            "src": "19622:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 1477,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1416,
                            "src": "19646:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "19622:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 1479,
                        "nodeType": "ExpressionStatement",
                        "src": "19622:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1483,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 348,
                              "src": "19695:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1484,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1400,
                              "src": "19703:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1485,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1416,
                              "src": "19714:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "id": 1480,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7221,
                              "src": "19667:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7220,
                            "src": "19667:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19667:55:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1487,
                        "nodeType": "ExpressionStatement",
                        "src": "19667:55:1"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1491,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "19756:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19756:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1493,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1400,
                        "src": "19768:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1494,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1402,
                        "src": "19779:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1495,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1404,
                        "src": "19790:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1496,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1414,
                        "src": "19801:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "id": 1497,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1416,
                        "src": "19810:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 1490,
                      "name": "Collect",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3270,
                      "src": "19748:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint128_$returns$__$",
                        "typeString": "function (address,address,int24,int24,uint128,uint128)"
                      }
                    },
                    "id": 1498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19748:70:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1499,
                  "nodeType": "EmitStatement",
                  "src": "19743:75:1"
                }
              ]
            },
            "documentation": {
              "id": 1398,
              "nodeType": "StructuredDocumentation",
              "src": "18747:38:1",
              "text": "@inheritdoc IMoonwalkerPoolActions"
            },
            "functionSelector": "4f1eb3d8",
            "id": 1501,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1412,
                "modifierName": {
                  "id": 1411,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "18976:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "18976:4:1"
              }
            ],
            "name": "collect",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1410,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "18967:8:1"
            },
            "parameters": {
              "id": 1409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1400,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18816:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1399,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18816:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1402,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18843:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1401,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "18843:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1404,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18868:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1403,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "18868:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1406,
                  "mutability": "mutable",
                  "name": "amount0Requested",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18893:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1405,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "18893:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1408,
                  "mutability": "mutable",
                  "name": "amount1Requested",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18927:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1407,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "18927:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18806:151:1"
            },
            "returnParameters": {
              "id": 1417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1414,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "18990:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1413,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "18990:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1416,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "19007:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1415,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "19007:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18989:34:1"
            },
            "scope": 2754,
            "src": "18790:1035:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3160
            ],
            "body": {
              "id": 1600,
              "nodeType": "Block",
              "src": "20104:779:1",
              "statements": [
                {
                  "assignments": [
                    1521,
                    1523,
                    1525
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1521,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 1600,
                      "src": "20115:30:1",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                        "typeString": "struct Position.Info"
                      },
                      "typeName": {
                        "id": 1520,
                        "name": "Position.Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4924,
                        "src": "20115:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                          "typeString": "struct Position.Info"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1523,
                      "mutability": "mutable",
                      "name": "amount0Int",
                      "nodeType": "VariableDeclaration",
                      "scope": 1600,
                      "src": "20147:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 1522,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20147:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1525,
                      "mutability": "mutable",
                      "name": "amount1Int",
                      "nodeType": "VariableDeclaration",
                      "scope": 1600,
                      "src": "20166:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 1524,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20166:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1541,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1528,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "20282:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "20282:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "id": 1530,
                            "name": "tickLower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1504,
                            "src": "20325:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          {
                            "id": 1531,
                            "name": "tickUpper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1506,
                            "src": "20367:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          {
                            "id": 1538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "20414:26:1",
                            "subExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1534,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1508,
                                      "src": "20422:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 1533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "20415:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 1532,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "20415:6:1",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20415:14:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toInt128",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5125,
                                "src": "20415:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$",
                                  "typeString": "function (int256) pure returns (int128)"
                                }
                              },
                              "id": 1537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20415:25:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int128",
                                "typeString": "int128"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "id": 1527,
                          "name": "ModifyPositionParams",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 936,
                          "src": "20232:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ModifyPositionParams_$936_storage_ptr_$",
                            "typeString": "type(struct MoonwalkerPool.ModifyPositionParams storage pointer)"
                          }
                        },
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "owner",
                          "tickLower",
                          "tickUpper",
                          "liquidityDelta"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "20232:227:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                          "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                        }
                      ],
                      "id": 1526,
                      "name": "_modifyPosition",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1099,
                      "src": "20199:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$936_memory_ptr_$returns$_t_struct$_Info_$4924_storage_ptr_$_t_int256_$_t_int256_$",
                        "typeString": "function (struct MoonwalkerPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)"
                      }
                    },
                    "id": 1540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20199:274:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Info_$4924_storage_ptr_$_t_int256_$_t_int256_$",
                      "typeString": "tuple(struct Position.Info storage pointer,int256,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20114:359:1"
                },
                {
                  "expression": {
                    "id": 1548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1542,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1514,
                      "src": "20484:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "20502:11:1",
                          "subExpression": {
                            "id": 1545,
                            "name": "amount0Int",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "20503:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20494:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 1543,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20494:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20494:20:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20484:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1549,
                  "nodeType": "ExpressionStatement",
                  "src": "20484:30:1"
                },
                {
                  "expression": {
                    "id": 1556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1550,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1516,
                      "src": "20524:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "20542:11:1",
                          "subExpression": {
                            "id": 1553,
                            "name": "amount1Int",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1525,
                            "src": "20543:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20534:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 1551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20534:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20534:20:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20524:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1557,
                  "nodeType": "ExpressionStatement",
                  "src": "20524:30:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 1558,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1514,
                        "src": "20569:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 1559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20579:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20569:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 1561,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1516,
                        "src": "20584:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 1562,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20594:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20584:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "20569:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1589,
                  "nodeType": "IfStatement",
                  "src": "20565:232:1",
                  "trueBody": {
                    "id": 1588,
                    "nodeType": "Block",
                    "src": "20597:200:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 1586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "expression": {
                                  "id": 1565,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1521,
                                  "src": "20612:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                    "typeString": "struct Position.Info storage pointer"
                                  }
                                },
                                "id": 1567,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tokensOwed0",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4921,
                                "src": "20612:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1568,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1521,
                                  "src": "20634:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                    "typeString": "struct Position.Info storage pointer"
                                  }
                                },
                                "id": 1569,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tokensOwed1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4923,
                                "src": "20634:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "id": 1570,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "20611:44:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                              "typeString": "tuple(uint128,uint128)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 1577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1571,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1521,
                                    "src": "20676:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                      "typeString": "struct Position.Info storage pointer"
                                    }
                                  },
                                  "id": 1572,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokensOwed0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4921,
                                  "src": "20676:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 1575,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1514,
                                      "src": "20707:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "20699:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 1573,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "20699:7:1",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20699:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20676:39:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 1584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1578,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1521,
                                    "src": "20733:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$4924_storage_ptr",
                                      "typeString": "struct Position.Info storage pointer"
                                    }
                                  },
                                  "id": 1579,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokensOwed1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4923,
                                  "src": "20733:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 1582,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1516,
                                      "src": "20764:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1581,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "20756:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 1580,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "20756:7:1",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20756:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20733:39:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "id": 1585,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "20658:128:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                              "typeString": "tuple(uint128,uint128)"
                            }
                          },
                          "src": "20611:175:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1587,
                        "nodeType": "ExpressionStatement",
                        "src": "20611:175:1"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1591,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "20817:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "20817:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1593,
                        "name": "tickLower",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1504,
                        "src": "20829:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1594,
                        "name": "tickUpper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1506,
                        "src": "20840:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "id": 1595,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1508,
                        "src": "20851:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "id": 1596,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1514,
                        "src": "20859:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1597,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1516,
                        "src": "20868:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1590,
                      "name": "Burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3285,
                      "src": "20812:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,int24,int24,uint128,uint256,uint256)"
                      }
                    },
                    "id": 1598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20812:64:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1599,
                  "nodeType": "EmitStatement",
                  "src": "20807:69:1"
                }
              ]
            },
            "documentation": {
              "id": 1502,
              "nodeType": "StructuredDocumentation",
              "src": "19831:108:1",
              "text": "@inheritdoc IMoonwalkerPoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition"
            },
            "functionSelector": "a34123a7",
            "id": 1601,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1512,
                "modifierName": {
                  "id": 1511,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "20056:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "20056:4:1"
              }
            ],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1510,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "20047:8:1"
            },
            "parameters": {
              "id": 1509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1504,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 1601,
                  "src": "19967:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1503,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "19967:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1506,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 1601,
                  "src": "19992:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 1505,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "19992:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1508,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1601,
                  "src": "20017:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1507,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "20017:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19957:80:1"
            },
            "returnParameters": {
              "id": 1517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1514,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1601,
                  "src": "20070:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1513,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20070:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1516,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1601,
                  "src": "20087:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20087:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20069:34:1"
            },
            "scope": 2754,
            "src": "19944:939:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "canonicalName": "MoonwalkerPool.SwapCache",
            "id": 1614,
            "members": [
              {
                "constant": false,
                "id": 1603,
                "mutability": "mutable",
                "name": "feeProtocol",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "20964:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 1602,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "20964:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1605,
                "mutability": "mutable",
                "name": "liquidityStart",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "21041:22:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 1604,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "21041:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1607,
                "mutability": "mutable",
                "name": "blockTimestamp",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "21119:21:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 1606,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "21119:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1609,
                "mutability": "mutable",
                "name": "tickCumulative",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "21250:20:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int56",
                  "typeString": "int56"
                },
                "typeName": {
                  "id": 1608,
                  "name": "int56",
                  "nodeType": "ElementaryTypeName",
                  "src": "21250:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1611,
                "mutability": "mutable",
                "name": "secondsPerLiquidityCumulativeX128",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "21393:41:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 1610,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "21393:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1613,
                "mutability": "mutable",
                "name": "computedLatestObservation",
                "nodeType": "VariableDeclaration",
                "scope": 1614,
                "src": "21516:30:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 1612,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "21516:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "SwapCache",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "20889:664:1",
            "visibility": "public"
          },
          {
            "canonicalName": "MoonwalkerPool.SwapState",
            "id": 1629,
            "members": [
              {
                "constant": false,
                "id": 1616,
                "mutability": "mutable",
                "name": "amountSpecifiedRemaining",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "21761:31:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                },
                "typeName": {
                  "id": 1615,
                  "name": "int256",
                  "nodeType": "ElementaryTypeName",
                  "src": "21761:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1618,
                "mutability": "mutable",
                "name": "amountCalculated",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "21873:23:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                },
                "typeName": {
                  "id": 1617,
                  "name": "int256",
                  "nodeType": "ElementaryTypeName",
                  "src": "21873:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1620,
                "mutability": "mutable",
                "name": "sqrtPriceX96",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "21937:20:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 1619,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "21937:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1622,
                "mutability": "mutable",
                "name": "tick",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "22021:10:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                },
                "typeName": {
                  "id": 1621,
                  "name": "int24",
                  "nodeType": "ElementaryTypeName",
                  "src": "22021:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1624,
                "mutability": "mutable",
                "name": "feeGrowthGlobalX128",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "22093:27:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1623,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "22093:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1626,
                "mutability": "mutable",
                "name": "protocolFee",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "22184:19:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 1625,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "22184:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1628,
                "mutability": "mutable",
                "name": "liquidity",
                "nodeType": "VariableDeclaration",
                "scope": 1629,
                "src": "22255:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 1627,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "22255:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "SwapState",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "21655:624:1",
            "visibility": "public"
          },
          {
            "canonicalName": "MoonwalkerPool.StepComputations",
            "id": 1644,
            "members": [
              {
                "constant": false,
                "id": 1631,
                "mutability": "mutable",
                "name": "sqrtPriceStartX96",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22369:25:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 1630,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "22369:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1633,
                "mutability": "mutable",
                "name": "tickNext",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22484:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                },
                "typeName": {
                  "id": 1632,
                  "name": "int24",
                  "nodeType": "ElementaryTypeName",
                  "src": "22484:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1635,
                "mutability": "mutable",
                "name": "initialized",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22558:16:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 1634,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "22558:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1637,
                "mutability": "mutable",
                "name": "sqrtPriceNextX96",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22631:24:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 1636,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "22631:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1639,
                "mutability": "mutable",
                "name": "amountIn",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22718:16:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1638,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "22718:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1641,
                "mutability": "mutable",
                "name": "amountOut",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22785:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1640,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "22785:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1643,
                "mutability": "mutable",
                "name": "feeAmount",
                "nodeType": "VariableDeclaration",
                "scope": 1644,
                "src": "22853:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1642,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "22853:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "StepComputations",
            "nodeType": "StructDefinition",
            "scope": 2754,
            "src": "22285:592:1",
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3178
            ],
            "body": {
              "id": 2332,
              "nodeType": "Block",
              "src": "23168:8764:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 1668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1666,
                          "name": "amountSpecified",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1651,
                          "src": "23186:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23205:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "23186:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4153",
                        "id": 1669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23208:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5",
                          "typeString": "literal_string \"AS\""
                        },
                        "value": "AS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5",
                          "typeString": "literal_string \"AS\""
                        }
                      ],
                      "id": 1665,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "23178:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23178:35:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1671,
                  "nodeType": "ExpressionStatement",
                  "src": "23178:35:1"
                },
                {
                  "assignments": [
                    1673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1673,
                      "mutability": "mutable",
                      "name": "slot0Start",
                      "nodeType": "VariableDeclaration",
                      "scope": 2332,
                      "src": "23224:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                        "typeString": "struct MoonwalkerPool.Slot0"
                      },
                      "typeName": {
                        "id": 1672,
                        "name": "Slot0",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 375,
                        "src": "23224:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage_ptr",
                          "typeString": "struct MoonwalkerPool.Slot0"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1675,
                  "initialValue": {
                    "id": 1674,
                    "name": "slot0",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 379,
                    "src": "23250:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slot0_$375_storage",
                      "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23224:31:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1677,
                          "name": "slot0Start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1673,
                          "src": "23274:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                          }
                        },
                        "id": 1678,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "unlocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 374,
                        "src": "23274:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c4f4b",
                        "id": 1679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23295:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                          "typeString": "literal_string \"LOK\""
                        },
                        "value": "LOK"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                          "typeString": "literal_string \"LOK\""
                        }
                      ],
                      "id": 1676,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "23266:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23266:35:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1681,
                  "nodeType": "ExpressionStatement",
                  "src": "23266:35:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "condition": {
                          "id": 1683,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1649,
                          "src": "23332:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 1696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1693,
                              "name": "sqrtPriceLimitX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "23470:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "id": 1694,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "23490:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 1695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrtPriceX96",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 362,
                              "src": "23490:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "23470:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 1700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1697,
                              "name": "sqrtPriceLimitX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "23517:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "expression": {
                                "id": 1698,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7170,
                                "src": "23537:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 1699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_SQRT_RATIO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6656,
                              "src": "23537:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "23517:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "23470:90:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "23332:228:1",
                        "trueExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 1687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1684,
                              "name": "sqrtPriceLimitX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "23361:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "expression": {
                                "id": 1685,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "23381:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 1686,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrtPriceX96",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 362,
                              "src": "23381:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "23361:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 1691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1688,
                              "name": "sqrtPriceLimitX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "23408:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "id": 1689,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7170,
                                "src": "23428:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 1690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MIN_SQRT_RATIO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6652,
                              "src": "23428:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "23408:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "23361:90:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53504c",
                        "id": 1703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23574:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094",
                          "typeString": "literal_string \"SPL\""
                        },
                        "value": "SPL"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094",
                          "typeString": "literal_string \"SPL\""
                        }
                      ],
                      "id": 1682,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "23311:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23311:278:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1705,
                  "nodeType": "ExpressionStatement",
                  "src": "23311:278:1"
                },
                {
                  "expression": {
                    "id": 1710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 1706,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "23600:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 1708,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "unlocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 374,
                      "src": "23600:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 1709,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23617:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "23600:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1711,
                  "nodeType": "ExpressionStatement",
                  "src": "23600:22:1"
                },
                {
                  "assignments": [
                    1713
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1713,
                      "mutability": "mutable",
                      "name": "cache",
                      "nodeType": "VariableDeclaration",
                      "scope": 2332,
                      "src": "23633:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                        "typeString": "struct MoonwalkerPool.SwapCache"
                      },
                      "typeName": {
                        "id": 1712,
                        "name": "SwapCache",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1614,
                        "src": "23633:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapCache_$1614_storage_ptr",
                          "typeString": "struct MoonwalkerPool.SwapCache"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1734,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1715,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 400,
                        "src": "23714:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1716,
                          "name": "_blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 540,
                          "src": "23757:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                            "typeString": "function () view returns (uint32)"
                          }
                        },
                        "id": 1717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23757:17:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "condition": {
                          "id": 1718,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1649,
                          "src": "23805:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 1727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1724,
                                  "name": "slot0Start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1673,
                                  "src": "23851:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.Slot0 memory"
                                  }
                                },
                                "id": 1725,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "feeProtocol",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 372,
                                "src": "23851:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 1726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23877:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "23851:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 1728,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "23850:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 1729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "23805:74:1",
                        "trueExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 1722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1719,
                                  "name": "slot0Start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1673,
                                  "src": "23819:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.Slot0 memory"
                                  }
                                },
                                "id": 1720,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "feeProtocol",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 372,
                                "src": "23819:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "hexValue": "3136",
                                "id": 1721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23844:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "23819:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 1723,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "23818:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 1730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23932:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "hexValue": "30",
                        "id": 1731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23967:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 1732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24013:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1714,
                      "name": "SwapCache",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1614,
                      "src": "23670:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapCache_$1614_storage_ptr_$",
                        "typeString": "type(struct MoonwalkerPool.SwapCache storage pointer)"
                      }
                    },
                    "id": 1733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "liquidityStart",
                      "blockTimestamp",
                      "feeProtocol",
                      "secondsPerLiquidityCumulativeX128",
                      "tickCumulative",
                      "computedLatestObservation"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "23670:363:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23633:400:1"
                },
                {
                  "assignments": [
                    1736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1736,
                      "mutability": "mutable",
                      "name": "exactInput",
                      "nodeType": "VariableDeclaration",
                      "scope": 2332,
                      "src": "24044:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1735,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "24044:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1740,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 1739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1737,
                      "name": "amountSpecified",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1651,
                      "src": "24062:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24080:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "24062:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24044:37:1"
                },
                {
                  "assignments": [
                    1742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1742,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "scope": 2332,
                      "src": "24092:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                        "typeString": "struct MoonwalkerPool.SwapState"
                      },
                      "typeName": {
                        "id": 1741,
                        "name": "SwapState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1629,
                        "src": "24092:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapState_$1629_storage_ptr",
                          "typeString": "struct MoonwalkerPool.SwapState"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1758,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1744,
                        "name": "amountSpecified",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1651,
                        "src": "24183:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 1745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24234:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "expression": {
                          "id": 1746,
                          "name": "slot0Start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1673,
                          "src": "24267:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                          }
                        },
                        "id": 1747,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sqrtPriceX96",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 362,
                        "src": "24267:23:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "expression": {
                          "id": 1748,
                          "name": "slot0Start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1673,
                          "src": "24314:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                            "typeString": "struct MoonwalkerPool.Slot0 memory"
                          }
                        },
                        "id": 1749,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tick",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 364,
                        "src": "24314:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      {
                        "condition": {
                          "id": 1750,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1649,
                          "src": "24368:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 1752,
                          "name": "feeGrowthGlobal1X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 387,
                          "src": "24404:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "24368:56:1",
                        "trueExpression": {
                          "id": 1751,
                          "name": "feeGrowthGlobal0X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 383,
                          "src": "24381:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 1754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24455:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "expression": {
                          "id": 1755,
                          "name": "cache",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1713,
                          "src": "24485:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapCache memory"
                          }
                        },
                        "id": 1756,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidityStart",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1605,
                        "src": "24485:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 1743,
                      "name": "SwapState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1629,
                      "src": "24129:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapState_$1629_storage_ptr_$",
                        "typeString": "type(struct MoonwalkerPool.SwapState storage pointer)"
                      }
                    },
                    "id": 1757,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "amountSpecifiedRemaining",
                      "amountCalculated",
                      "sqrtPriceX96",
                      "tick",
                      "feeGrowthGlobalX128",
                      "protocolFee",
                      "liquidity"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "24129:391:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                      "typeString": "struct MoonwalkerPool.SwapState memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24092:428:1"
                },
                {
                  "body": {
                    "id": 2090,
                    "nodeType": "Block",
                    "src": "24734:4534:1",
                    "statements": [
                      {
                        "assignments": [
                          1769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1769,
                            "mutability": "mutable",
                            "name": "step",
                            "nodeType": "VariableDeclaration",
                            "scope": 2090,
                            "src": "24748:28:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                              "typeString": "struct MoonwalkerPool.StepComputations"
                            },
                            "typeName": {
                              "id": 1768,
                              "name": "StepComputations",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1644,
                              "src": "24748:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StepComputations_$1644_storage_ptr",
                                "typeString": "struct MoonwalkerPool.StepComputations"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1770,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24748:28:1"
                      },
                      {
                        "expression": {
                          "id": 1776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1771,
                              "name": "step",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1769,
                              "src": "24791:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                              }
                            },
                            "id": 1773,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "sqrtPriceStartX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1631,
                            "src": "24791:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 1774,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "24816:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 1775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrtPriceX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1620,
                            "src": "24816:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "24791:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 1777,
                        "nodeType": "ExpressionStatement",
                        "src": "24791:43:1"
                      },
                      {
                        "expression": {
                          "id": 1791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "expression": {
                                  "id": 1778,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "24850:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1780,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tickNext",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1633,
                                "src": "24850:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1781,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "24865:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1782,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "initialized",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1635,
                                "src": "24865:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1783,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "24849:33:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_int24_$_t_bool_$",
                              "typeString": "tuple(int24,bool)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1786,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "24946:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 1787,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1622,
                                "src": "24946:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1788,
                                "name": "tickSpacing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 356,
                                "src": "24974:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 1789,
                                "name": "zeroForOne",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1649,
                                "src": "25003:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 1784,
                                "name": "tickBitmap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 412,
                                "src": "24885:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$",
                                  "typeString": "mapping(int16 => uint256)"
                                }
                              },
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "nextInitializedTickWithinOneWord",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6634,
                              "src": "24885:43:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$",
                                "typeString": "function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"
                              }
                            },
                            "id": 1790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24885:142:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_int24_$_t_bool_$",
                              "typeString": "tuple(int24,bool)"
                            }
                          },
                          "src": "24849:178:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1792,
                        "nodeType": "ExpressionStatement",
                        "src": "24849:178:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 1797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1793,
                              "name": "step",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1769,
                              "src": "25159:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                              }
                            },
                            "id": 1794,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tickNext",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1633,
                            "src": "25159:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1795,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7170,
                              "src": "25175:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 1796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MIN_TICK",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6643,
                            "src": "25175:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "25159:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 1810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 1806,
                                "name": "step",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1769,
                                "src": "25270:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.StepComputations memory"
                                }
                              },
                              "id": 1807,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tickNext",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1633,
                              "src": "25270:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "id": 1808,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7170,
                                "src": "25286:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 1809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6648,
                              "src": "25286:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "25270:33:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1819,
                          "nodeType": "IfStatement",
                          "src": "25266:105:1",
                          "trueBody": {
                            "id": 1818,
                            "nodeType": "Block",
                            "src": "25305:66:1",
                            "statements": [
                              {
                                "expression": {
                                  "id": 1816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 1811,
                                      "name": "step",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1769,
                                      "src": "25323:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                        "typeString": "struct MoonwalkerPool.StepComputations memory"
                                      }
                                    },
                                    "id": 1813,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "tickNext",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1633,
                                    "src": "25323:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 1814,
                                      "name": "TickMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7170,
                                      "src": "25339:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                        "typeString": "type(library TickMath)"
                                      }
                                    },
                                    "id": 1815,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "MAX_TICK",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6648,
                                    "src": "25339:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "25323:33:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 1817,
                                "nodeType": "ExpressionStatement",
                                "src": "25323:33:1"
                              }
                            ]
                          }
                        },
                        "id": 1820,
                        "nodeType": "IfStatement",
                        "src": "25155:216:1",
                        "trueBody": {
                          "id": 1805,
                          "nodeType": "Block",
                          "src": "25194:66:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 1803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1798,
                                    "name": "step",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1769,
                                    "src": "25212:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.StepComputations memory"
                                    }
                                  },
                                  "id": 1800,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "tickNext",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1633,
                                  "src": "25212:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 1801,
                                    "name": "TickMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7170,
                                    "src": "25228:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                      "typeString": "type(library TickMath)"
                                    }
                                  },
                                  "id": 1802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "MIN_TICK",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6643,
                                  "src": "25228:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "25212:33:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 1804,
                              "nodeType": "ExpressionStatement",
                              "src": "25212:33:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1821,
                              "name": "step",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1769,
                              "src": "25432:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                              }
                            },
                            "id": 1823,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "sqrtPriceNextX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1637,
                            "src": "25432:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1826,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "25484:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1827,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tickNext",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1633,
                                "src": "25484:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "expression": {
                                "id": 1824,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7170,
                                "src": "25456:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 1825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getSqrtRatioAtTick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7030,
                              "src": "25456:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                "typeString": "function (int24) pure returns (uint160)"
                              }
                            },
                            "id": 1828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25456:42:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "25432:66:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 1830,
                        "nodeType": "ExpressionStatement",
                        "src": "25432:66:1"
                      },
                      {
                        "expression": {
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "expression": {
                                  "id": 1831,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "25633:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 1833,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "sqrtPriceX96",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1620,
                                "src": "25633:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1834,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "25653:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1835,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "amountIn",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1639,
                                "src": "25653:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1836,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "25668:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1837,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "amountOut",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1641,
                                "src": "25668:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1838,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "25684:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1839,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "feeAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1643,
                                "src": "25684:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1840,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "25632:67:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint160,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1843,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "25744:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 1844,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrtPriceX96",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1620,
                                "src": "25744:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "condition": {
                                  "components": [
                                    {
                                      "condition": {
                                        "id": 1845,
                                        "name": "zeroForOne",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1649,
                                        "src": "25781:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        "id": 1853,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 1850,
                                            "name": "step",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1769,
                                            "src": "25838:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.StepComputations memory"
                                            }
                                          },
                                          "id": 1851,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sqrtPriceNextX96",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1637,
                                          "src": "25838:21:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "id": 1852,
                                          "name": "sqrtPriceLimitX96",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1653,
                                          "src": "25862:17:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          }
                                        },
                                        "src": "25838:41:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 1854,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "Conditional",
                                      "src": "25781:98:1",
                                      "trueExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        },
                                        "id": 1849,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 1846,
                                            "name": "step",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1769,
                                            "src": "25794:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.StepComputations memory"
                                            }
                                          },
                                          "id": 1847,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sqrtPriceNextX96",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1637,
                                          "src": "25794:21:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "id": 1848,
                                          "name": "sqrtPriceLimitX96",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1653,
                                          "src": "25818:17:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          }
                                        },
                                        "src": "25794:41:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 1855,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25780:100:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "expression": {
                                    "id": 1857,
                                    "name": "step",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1769,
                                    "src": "25943:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.StepComputations memory"
                                    }
                                  },
                                  "id": 1858,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrtPriceNextX96",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1637,
                                  "src": "25943:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "id": 1859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "25780:184:1",
                                "trueExpression": {
                                  "id": 1856,
                                  "name": "sqrtPriceLimitX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1653,
                                  "src": "25903:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1860,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "25982:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 1861,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1628,
                                "src": "25982:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "expression": {
                                  "id": 1862,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "26015:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 1863,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountSpecifiedRemaining",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1616,
                                "src": "26015:30:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              {
                                "id": 1864,
                                "name": "fee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "26063:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              ],
                              "expression": {
                                "id": 1841,
                                "name": "SwapMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5927,
                                "src": "25702:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SwapMath_$5927_$",
                                  "typeString": "type(library SwapMath)"
                                }
                              },
                              "id": 1842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeSwapStep",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5926,
                              "src": "25702:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"
                              }
                            },
                            "id": 1865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25702:378:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint160,uint256,uint256,uint256)"
                            }
                          },
                          "src": "25632:448:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1867,
                        "nodeType": "ExpressionStatement",
                        "src": "25632:448:1"
                      },
                      {
                        "condition": {
                          "id": 1868,
                          "name": "exactInput",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1736,
                          "src": "26099:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1922,
                          "nodeType": "Block",
                          "src": "26323:206:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 1903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1896,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "26341:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1898,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amountSpecifiedRemaining",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1616,
                                  "src": "26341:30:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "expression": {
                                        "id": 1899,
                                        "name": "step",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1769,
                                        "src": "26375:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                          "typeString": "struct MoonwalkerPool.StepComputations memory"
                                        }
                                      },
                                      "id": 1900,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amountOut",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1641,
                                      "src": "26375:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toInt256",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5149,
                                    "src": "26375:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (int256)"
                                    }
                                  },
                                  "id": 1902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26375:25:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "26341:59:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1904,
                              "nodeType": "ExpressionStatement",
                              "src": "26341:59:1"
                            },
                            {
                              "expression": {
                                "id": 1920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1905,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "26418:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1907,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amountCalculated",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1618,
                                  "src": "26418:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 1915,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "expression": {
                                                  "id": 1911,
                                                  "name": "step",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1769,
                                                  "src": "26471:4:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                                  }
                                                },
                                                "id": 1912,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "amountIn",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1639,
                                                "src": "26471:13:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "expression": {
                                                  "id": 1913,
                                                  "name": "step",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1769,
                                                  "src": "26487:4:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                                  }
                                                },
                                                "id": 1914,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "feeAmount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1643,
                                                "src": "26487:14:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "26471:30:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 1916,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "26470:32:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1917,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toInt256",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5149,
                                        "src": "26470:41:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256) pure returns (int256)"
                                        }
                                      },
                                      "id": 1918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26470:43:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 1908,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1742,
                                        "src": "26443:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                          "typeString": "struct MoonwalkerPool.SwapState memory"
                                        }
                                      },
                                      "id": 1909,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amountCalculated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1618,
                                      "src": "26443:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 1910,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4144,
                                    "src": "26443:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                      "typeString": "function (int256,int256) pure returns (int256)"
                                    }
                                  },
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26443:71:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "26418:96:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1921,
                              "nodeType": "ExpressionStatement",
                              "src": "26418:96:1"
                            }
                          ]
                        },
                        "id": 1923,
                        "nodeType": "IfStatement",
                        "src": "26095:434:1",
                        "trueBody": {
                          "id": 1895,
                          "nodeType": "Block",
                          "src": "26111:206:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 1880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1869,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "26129:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1871,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amountSpecifiedRemaining",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1616,
                                  "src": "26129:30:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1876,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 1872,
                                              "name": "step",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1769,
                                              "src": "26164:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                                              }
                                            },
                                            "id": 1873,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "amountIn",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1639,
                                            "src": "26164:13:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 1874,
                                              "name": "step",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1769,
                                              "src": "26180:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                                              }
                                            },
                                            "id": 1875,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "feeAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1643,
                                            "src": "26180:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "26164:30:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1877,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "26163:32:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toInt256",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5149,
                                    "src": "26163:41:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (int256)"
                                    }
                                  },
                                  "id": 1879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26163:43:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "26129:77:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1881,
                              "nodeType": "ExpressionStatement",
                              "src": "26129:77:1"
                            },
                            {
                              "expression": {
                                "id": 1893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1882,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "26224:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1884,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amountCalculated",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1618,
                                  "src": "26224:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "expression": {
                                            "id": 1888,
                                            "name": "step",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1769,
                                            "src": "26276:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.StepComputations memory"
                                            }
                                          },
                                          "id": 1889,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amountOut",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1641,
                                          "src": "26276:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1890,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toInt256",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5149,
                                        "src": "26276:23:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256) pure returns (int256)"
                                        }
                                      },
                                      "id": 1891,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26276:25:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 1885,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1742,
                                        "src": "26249:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                          "typeString": "struct MoonwalkerPool.SwapState memory"
                                        }
                                      },
                                      "id": 1886,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amountCalculated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1618,
                                      "src": "26249:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 1887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4171,
                                    "src": "26249:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                      "typeString": "function (int256,int256) pure returns (int256)"
                                    }
                                  },
                                  "id": 1892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26249:53:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "26224:78:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1894,
                              "nodeType": "ExpressionStatement",
                              "src": "26224:78:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 1927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1924,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1713,
                              "src": "26664:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapCache memory"
                              }
                            },
                            "id": 1925,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1603,
                            "src": "26664:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26684:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "26664:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1952,
                        "nodeType": "IfStatement",
                        "src": "26660:204:1",
                        "trueBody": {
                          "id": 1951,
                          "nodeType": "Block",
                          "src": "26687:177:1",
                          "statements": [
                            {
                              "assignments": [
                                1929
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1929,
                                  "mutability": "mutable",
                                  "name": "delta",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1951,
                                  "src": "26705:13:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1928,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "26705:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1935,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1930,
                                    "name": "step",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1769,
                                    "src": "26721:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.StepComputations memory"
                                    }
                                  },
                                  "id": 1931,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1643,
                                  "src": "26721:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1932,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1713,
                                    "src": "26738:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                                    }
                                  },
                                  "id": 1933,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeProtocol",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1603,
                                  "src": "26738:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "26721:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "26705:50:1"
                            },
                            {
                              "expression": {
                                "id": 1940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1936,
                                    "name": "step",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1769,
                                    "src": "26773:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.StepComputations memory"
                                    }
                                  },
                                  "id": 1938,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1643,
                                  "src": "26773:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 1939,
                                  "name": "delta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1929,
                                  "src": "26791:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26773:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1941,
                              "nodeType": "ExpressionStatement",
                              "src": "26773:23:1"
                            },
                            {
                              "expression": {
                                "id": 1949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1942,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "26814:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1944,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "protocolFee",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1626,
                                  "src": "26814:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1947,
                                      "name": "delta",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1929,
                                      "src": "26843:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "26835:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 1945,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "26835:7:1",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26835:14:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "26814:35:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 1950,
                              "nodeType": "ExpressionStatement",
                              "src": "26814:35:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 1956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1953,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "26923:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 1954,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1628,
                            "src": "26923:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26941:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "26923:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1971,
                        "nodeType": "IfStatement",
                        "src": "26919:138:1",
                        "trueBody": {
                          "expression": {
                            "id": 1969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 1957,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "26960:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 1959,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "feeGrowthGlobalX128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1624,
                              "src": "26960:25:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 1962,
                                    "name": "step",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1769,
                                    "src": "27005:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.StepComputations memory"
                                    }
                                  },
                                  "id": 1963,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1643,
                                  "src": "27005:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1964,
                                    "name": "FixedPoint128",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3807,
                                    "src": "27021:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$3807_$",
                                      "typeString": "type(library FixedPoint128)"
                                    }
                                  },
                                  "id": 1965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "Q128",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3806,
                                  "src": "27021:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1966,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "27041:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 1967,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1628,
                                  "src": "27041:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "id": 1960,
                                  "name": "FullMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3990,
                                  "src": "26989:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FullMath_$3990_$",
                                    "typeString": "type(library FullMath)"
                                  }
                                },
                                "id": 1961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mulDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3946,
                                "src": "26989:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26989:68:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26960:97:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1970,
                          "nodeType": "ExpressionStatement",
                          "src": "26960:97:1"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 1976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1972,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "27131:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 1973,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrtPriceX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1620,
                            "src": "27131:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 1974,
                              "name": "step",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1769,
                              "src": "27153:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                "typeString": "struct MoonwalkerPool.StepComputations memory"
                              }
                            },
                            "id": 1975,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrtPriceNextX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1637,
                            "src": "27153:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "27131:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 2076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2072,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "28999:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 2073,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrtPriceX96",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1620,
                              "src": "28999:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 2074,
                                "name": "step",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1769,
                                "src": "29021:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.StepComputations memory"
                                }
                              },
                              "id": 2075,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrtPriceStartX96",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1631,
                              "src": "29021:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "28999:44:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2088,
                          "nodeType": "IfStatement",
                          "src": "28995:263:1",
                          "trueBody": {
                            "id": 2087,
                            "nodeType": "Block",
                            "src": "29045:213:1",
                            "statements": [
                              {
                                "expression": {
                                  "id": 2085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 2077,
                                      "name": "state",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1742,
                                      "src": "29183:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                        "typeString": "struct MoonwalkerPool.SwapState memory"
                                      }
                                    },
                                    "id": 2079,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "tick",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1622,
                                    "src": "29183:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 2082,
                                          "name": "state",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1742,
                                          "src": "29224:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.SwapState memory"
                                          }
                                        },
                                        "id": 2083,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sqrtPriceX96",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1620,
                                        "src": "29224:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "expression": {
                                        "id": 2080,
                                        "name": "TickMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7170,
                                        "src": "29196:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                          "typeString": "type(library TickMath)"
                                        }
                                      },
                                      "id": 2081,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getTickAtSqrtRatio",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7169,
                                      "src": "29196:27:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$",
                                        "typeString": "function (uint160) pure returns (int24)"
                                      }
                                    },
                                    "id": 2084,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "29196:47:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "29183:60:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 2086,
                                "nodeType": "ExpressionStatement",
                                "src": "29183:60:1"
                              }
                            ]
                          }
                        },
                        "id": 2089,
                        "nodeType": "IfStatement",
                        "src": "27127:2131:1",
                        "trueBody": {
                          "id": 2071,
                          "nodeType": "Block",
                          "src": "27176:1813:1",
                          "statements": [
                            {
                              "condition": {
                                "expression": {
                                  "id": 1977,
                                  "name": "step",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1769,
                                  "src": "27269:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.StepComputations memory"
                                  }
                                },
                                "id": 1978,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialized",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1635,
                                "src": "27269:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2057,
                              "nodeType": "IfStatement",
                              "src": "27265:1632:1",
                              "trueBody": {
                                "id": 2056,
                                "nodeType": "Block",
                                "src": "27287:1610:1",
                                "statements": [
                                  {
                                    "condition": {
                                      "id": 1981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "27483:32:1",
                                      "subExpression": {
                                        "expression": {
                                          "id": 1979,
                                          "name": "cache",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1713,
                                          "src": "27484:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.SwapCache memory"
                                          }
                                        },
                                        "id": 1980,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "computedLatestObservation",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1613,
                                        "src": "27484:31:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 2011,
                                    "nodeType": "IfStatement",
                                    "src": "27479:565:1",
                                    "trueBody": {
                                      "id": 2010,
                                      "nodeType": "Block",
                                      "src": "27517:527:1",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 2002,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "components": [
                                                {
                                                  "expression": {
                                                    "id": 1982,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1713,
                                                    "src": "27544:5:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 1984,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "tickCumulative",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1609,
                                                  "src": "27544:20:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int56",
                                                    "typeString": "int56"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1985,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1713,
                                                    "src": "27566:5:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 1986,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "secondsPerLiquidityCumulativeX128",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1611,
                                                  "src": "27566:39:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                  }
                                                }
                                              ],
                                              "id": 1987,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "TupleExpression",
                                              "src": "27543:63:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$",
                                                "typeString": "tuple(int56,uint160)"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 1990,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1713,
                                                    "src": "27665:5:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 1991,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "blockTimestamp",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1607,
                                                  "src": "27665:20:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                  }
                                                },
                                                {
                                                  "hexValue": "30",
                                                  "id": 1992,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "27715:1:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1993,
                                                    "name": "slot0Start",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1673,
                                                    "src": "27746:10:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.Slot0 memory"
                                                    }
                                                  },
                                                  "id": 1994,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "tick",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 364,
                                                  "src": "27746:15:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1995,
                                                    "name": "slot0Start",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1673,
                                                    "src": "27791:10:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.Slot0 memory"
                                                    }
                                                  },
                                                  "id": 1996,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "observationIndex",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 366,
                                                  "src": "27791:27:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1997,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1713,
                                                    "src": "27848:5:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 1998,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "liquidityStart",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1605,
                                                  "src": "27848:20:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint128",
                                                    "typeString": "uint128"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 1999,
                                                    "name": "slot0Start",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1673,
                                                    "src": "27898:10:1",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                                      "typeString": "struct MoonwalkerPool.Slot0 memory"
                                                    }
                                                  },
                                                  "id": 2000,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "observationCardinality",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 368,
                                                  "src": "27898:33:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint128",
                                                    "typeString": "uint128"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 1988,
                                                  "name": "observations",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 424,
                                                  "src": "27609:12:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                                                    "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                                                  }
                                                },
                                                "id": 1989,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "observeSingle",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4820,
                                                "src": "27609:26:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                                                  "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                                                }
                                              },
                                              "id": 2001,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "27609:348:1",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$",
                                                "typeString": "tuple(int56,uint160)"
                                              }
                                            },
                                            "src": "27543:414:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 2003,
                                          "nodeType": "ExpressionStatement",
                                          "src": "27543:414:1"
                                        },
                                        {
                                          "expression": {
                                            "id": 2008,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 2004,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1713,
                                                "src": "27983:5:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                                  "typeString": "struct MoonwalkerPool.SwapCache memory"
                                                }
                                              },
                                              "id": 2006,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "computedLatestObservation",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1613,
                                              "src": "27983:31:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "74727565",
                                              "id": 2007,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "28017:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            "src": "27983:38:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 2009,
                                          "nodeType": "ExpressionStatement",
                                          "src": "27983:38:1"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "assignments": [
                                      2013
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2013,
                                        "mutability": "mutable",
                                        "name": "liquidityNet",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2056,
                                        "src": "28065:19:1",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        },
                                        "typeName": {
                                          "id": 2012,
                                          "name": "int128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "28065:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int128",
                                            "typeString": "int128"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2037,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 2016,
                                            "name": "step",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1769,
                                            "src": "28152:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.StepComputations memory"
                                            }
                                          },
                                          "id": 2017,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tickNext",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1633,
                                          "src": "28152:13:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "condition": {
                                                "id": 2018,
                                                "name": "zeroForOne",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1649,
                                                "src": "28196:10:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseExpression": {
                                                "id": 2021,
                                                "name": "feeGrowthGlobal0X128",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 383,
                                                "src": "28237:20:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2022,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "Conditional",
                                              "src": "28196:61:1",
                                              "trueExpression": {
                                                "expression": {
                                                  "id": 2019,
                                                  "name": "state",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1742,
                                                  "src": "28209:5:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                                  }
                                                },
                                                "id": 2020,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "feeGrowthGlobalX128",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1624,
                                                "src": "28209:25:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 2023,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28195:63:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "condition": {
                                                "id": 2024,
                                                "name": "zeroForOne",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1649,
                                                "src": "28289:10:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseExpression": {
                                                "expression": {
                                                  "id": 2026,
                                                  "name": "state",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1742,
                                                  "src": "28325:5:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                                  }
                                                },
                                                "id": 2027,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "feeGrowthGlobalX128",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1624,
                                                "src": "28325:25:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2028,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "Conditional",
                                              "src": "28289:61:1",
                                              "trueExpression": {
                                                "id": 2025,
                                                "name": "feeGrowthGlobal1X128",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 387,
                                                "src": "28302:20:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 2029,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28288:63:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2030,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1713,
                                            "src": "28381:5:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.SwapCache memory"
                                            }
                                          },
                                          "id": 2031,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "secondsPerLiquidityCumulativeX128",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1611,
                                          "src": "28381:39:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2032,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1713,
                                            "src": "28450:5:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.SwapCache memory"
                                            }
                                          },
                                          "id": 2033,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tickCumulative",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1609,
                                          "src": "28450:20:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int56",
                                            "typeString": "int56"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2034,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1713,
                                            "src": "28500:5:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                              "typeString": "struct MoonwalkerPool.SwapCache memory"
                                            }
                                          },
                                          "id": 2035,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "blockTimestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1607,
                                          "src": "28500:20:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          },
                                          {
                                            "typeIdentifier": "t_int56",
                                            "typeString": "int56"
                                          },
                                          {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        ],
                                        "expression": {
                                          "id": 2014,
                                          "name": "ticks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 406,
                                          "src": "28111:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                                            "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                                          }
                                        },
                                        "id": 2015,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "cross",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6378,
                                        "src": "28111:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$_$",
                                          "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32) returns (int128)"
                                        }
                                      },
                                      "id": 2036,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "28111:435:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "28065:481:1"
                                  },
                                  {
                                    "condition": {
                                      "id": 2038,
                                      "name": "zeroForOne",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1649,
                                      "src": "28744:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 2044,
                                    "nodeType": "IfStatement",
                                    "src": "28740:44:1",
                                    "trueBody": {
                                      "expression": {
                                        "id": 2042,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 2039,
                                          "name": "liquidityNet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2013,
                                          "src": "28756:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int128",
                                            "typeString": "int128"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "id": 2041,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "-",
                                          "prefix": true,
                                          "src": "28771:13:1",
                                          "subExpression": {
                                            "id": 2040,
                                            "name": "liquidityNet",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2013,
                                            "src": "28772:12:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int128",
                                              "typeString": "int128"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int128",
                                            "typeString": "int128"
                                          }
                                        },
                                        "src": "28756:28:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      },
                                      "id": 2043,
                                      "nodeType": "ExpressionStatement",
                                      "src": "28756:28:1"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2054,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 2045,
                                          "name": "state",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1742,
                                          "src": "28807:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                            "typeString": "struct MoonwalkerPool.SwapState memory"
                                          }
                                        },
                                        "id": 2047,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1628,
                                        "src": "28807:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 2050,
                                              "name": "state",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1742,
                                              "src": "28848:5:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                                "typeString": "struct MoonwalkerPool.SwapState memory"
                                              }
                                            },
                                            "id": 2051,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "liquidity",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1628,
                                            "src": "28848:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          {
                                            "id": 2052,
                                            "name": "liquidityNet",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2013,
                                            "src": "28865:12:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int128",
                                              "typeString": "int128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            },
                                            {
                                              "typeIdentifier": "t_int128",
                                              "typeString": "int128"
                                            }
                                          ],
                                          "expression": {
                                            "id": 2048,
                                            "name": "LiquidityMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4042,
                                            "src": "28825:13:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4042_$",
                                              "typeString": "type(library LiquidityMath)"
                                            }
                                          },
                                          "id": 2049,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "addDelta",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4041,
                                          "src": "28825:22:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$",
                                            "typeString": "function (uint128,int128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 2053,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "28825:53:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "28807:71:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 2055,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28807:71:1"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 2069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 2058,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "28915:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                      "typeString": "struct MoonwalkerPool.SwapState memory"
                                    }
                                  },
                                  "id": 2060,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "tick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1622,
                                  "src": "28915:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "condition": {
                                    "id": 2061,
                                    "name": "zeroForOne",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1649,
                                    "src": "28928:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "expression": {
                                      "id": 2066,
                                      "name": "step",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1769,
                                      "src": "28961:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                        "typeString": "struct MoonwalkerPool.StepComputations memory"
                                      }
                                    },
                                    "id": 2067,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tickNext",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1633,
                                    "src": "28961:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "id": 2068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "28928:46:1",
                                  "trueExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    "id": 2065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 2062,
                                        "name": "step",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1769,
                                        "src": "28941:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_StepComputations_$1644_memory_ptr",
                                          "typeString": "struct MoonwalkerPool.StepComputations memory"
                                        }
                                      },
                                      "id": 2063,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tickNext",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1633,
                                      "src": "28941:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 2064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "28957:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "28941:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "28915:59:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 2070,
                              "nodeType": "ExpressionStatement",
                              "src": "28915:59:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 1762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 1759,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "24654:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 1760,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amountSpecifiedRemaining",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1616,
                        "src": "24654:30:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 1761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24688:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "24654:35:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "id": 1766,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 1763,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "24693:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 1764,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sqrtPriceX96",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1620,
                        "src": "24693:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "id": 1765,
                        "name": "sqrtPriceLimitX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "24715:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "24693:39:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "24654:78:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2091,
                  "nodeType": "WhileStatement",
                  "src": "24647:4621:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 2096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 2092,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1742,
                        "src": "29350:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                          "typeString": "struct MoonwalkerPool.SwapState memory"
                        }
                      },
                      "id": 2093,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tick",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1622,
                      "src": "29350:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 2094,
                        "name": "slot0Start",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1673,
                        "src": "29364:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                          "typeString": "struct MoonwalkerPool.Slot0 memory"
                        }
                      },
                      "id": 2095,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tick",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 364,
                      "src": "29364:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "29350:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2144,
                    "nodeType": "Block",
                    "src": "30062:111:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 2142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 2137,
                              "name": "slot0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 379,
                              "src": "30123:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                              }
                            },
                            "id": 2139,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "sqrtPriceX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 362,
                            "src": "30123:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2140,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30144:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2141,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrtPriceX96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1620,
                            "src": "30144:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "30123:39:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 2143,
                        "nodeType": "ExpressionStatement",
                        "src": "30123:39:1"
                      }
                    ]
                  },
                  "id": 2145,
                  "nodeType": "IfStatement",
                  "src": "29346:827:1",
                  "trueBody": {
                    "id": 2136,
                    "nodeType": "Block",
                    "src": "29381:675:1",
                    "statements": [
                      {
                        "assignments": [
                          2098,
                          2100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2098,
                            "mutability": "mutable",
                            "name": "observationIndex",
                            "nodeType": "VariableDeclaration",
                            "scope": 2136,
                            "src": "29396:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 2097,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "29396:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2100,
                            "mutability": "mutable",
                            "name": "observationCardinality",
                            "nodeType": "VariableDeclaration",
                            "scope": 2136,
                            "src": "29421:29:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 2099,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "29421:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2116,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2103,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "29510:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 2104,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observationIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 366,
                              "src": "29510:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "expression": {
                                "id": 2105,
                                "name": "cache",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1713,
                                "src": "29559:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapCache memory"
                                }
                              },
                              "id": 2106,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "blockTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1607,
                              "src": "29559:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 2107,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "29601:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 2108,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 364,
                              "src": "29601:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "expression": {
                                "id": 2109,
                                "name": "cache",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1713,
                                "src": "29638:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapCache memory"
                                }
                              },
                              "id": 2110,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityStart",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1605,
                              "src": "29638:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "expression": {
                                "id": 2111,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "29680:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 2112,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observationCardinality",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 368,
                              "src": "29680:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "expression": {
                                "id": 2113,
                                "name": "slot0Start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1673,
                                "src": "29735:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slot0_$375_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.Slot0 memory"
                                }
                              },
                              "id": 2114,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "observationCardinalityNext",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 370,
                              "src": "29735:37:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "id": 2101,
                              "name": "observations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 424,
                              "src": "29470:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Observation_$4184_storage_$65535_storage",
                                "typeString": "struct Oracle.Observation storage ref[65535] storage ref"
                              }
                            },
                            "id": 2102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "write",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4350,
                            "src": "29470:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4184_storage_$65535_storage_ptr_$",
                              "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)"
                            }
                          },
                          "id": 2115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29470:320:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$",
                            "typeString": "tuple(uint16,uint16)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29395:395:1"
                      },
                      {
                        "expression": {
                          "id": 2134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "expression": {
                                  "id": 2117,
                                  "name": "slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 379,
                                  "src": "29805:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                    "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                  }
                                },
                                "id": 2119,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "sqrtPriceX96",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 362,
                                "src": "29805:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2120,
                                  "name": "slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 379,
                                  "src": "29825:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                    "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                  }
                                },
                                "id": 2121,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 364,
                                "src": "29825:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2122,
                                  "name": "slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 379,
                                  "src": "29837:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                    "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                  }
                                },
                                "id": 2123,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "observationIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 366,
                                "src": "29837:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2124,
                                  "name": "slot0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 379,
                                  "src": "29861:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                    "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                                  }
                                },
                                "id": 2125,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "observationCardinality",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 368,
                                "src": "29861:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "id": 2126,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "29804:86:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$",
                              "typeString": "tuple(uint160,int24,uint16,uint16)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "expression": {
                                  "id": 2127,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "29911:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 2128,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrtPriceX96",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1620,
                                "src": "29911:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2129,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "29947:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                    "typeString": "struct MoonwalkerPool.SwapState memory"
                                  }
                                },
                                "id": 2130,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1622,
                                "src": "29947:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 2131,
                                "name": "observationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2098,
                                "src": "29975:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "id": 2132,
                                "name": "observationCardinality",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2100,
                                "src": "30009:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "id": 2133,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "29893:152:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$",
                              "typeString": "tuple(uint160,int24,uint16,uint16)"
                            }
                          },
                          "src": "29804:241:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2135,
                        "nodeType": "ExpressionStatement",
                        "src": "29804:241:1"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 2150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 2146,
                        "name": "cache",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1713,
                        "src": "30229:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapCache_$1614_memory_ptr",
                          "typeString": "struct MoonwalkerPool.SwapCache memory"
                        }
                      },
                      "id": 2147,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "liquidityStart",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1605,
                      "src": "30229:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 2148,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1742,
                        "src": "30253:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                          "typeString": "struct MoonwalkerPool.SwapState memory"
                        }
                      },
                      "id": 2149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "liquidity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1628,
                      "src": "30253:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "30229:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2156,
                  "nodeType": "IfStatement",
                  "src": "30225:72:1",
                  "trueBody": {
                    "expression": {
                      "id": 2154,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 2151,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 400,
                        "src": "30270:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "expression": {
                          "id": 2152,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "30282:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 2153,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidity",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1628,
                        "src": "30282:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "30270:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 2155,
                    "nodeType": "ExpressionStatement",
                    "src": "30270:27:1"
                  }
                },
                {
                  "condition": {
                    "id": 2157,
                    "name": "zeroForOne",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1649,
                    "src": "30479:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2193,
                    "nodeType": "Block",
                    "src": "30651:154:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 2179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2176,
                            "name": "feeGrowthGlobal1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 387,
                            "src": "30665:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2177,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30688:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2178,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthGlobalX128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1624,
                            "src": "30688:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30665:48:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2180,
                        "nodeType": "ExpressionStatement",
                        "src": "30665:48:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2181,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30731:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2182,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "protocolFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1626,
                            "src": "30731:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30751:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30731:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2192,
                        "nodeType": "IfStatement",
                        "src": "30727:67:1",
                        "trueBody": {
                          "expression": {
                            "id": 2190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 2185,
                                "name": "protocolFees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 396,
                                "src": "30754:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                  "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                                }
                              },
                              "id": 2187,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "token1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 391,
                              "src": "30754:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "expression": {
                                "id": 2188,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "30777:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 2189,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "protocolFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1626,
                              "src": "30777:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "30754:40:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2191,
                          "nodeType": "ExpressionStatement",
                          "src": "30754:40:1"
                        }
                      }
                    ]
                  },
                  "id": 2194,
                  "nodeType": "IfStatement",
                  "src": "30475:330:1",
                  "trueBody": {
                    "id": 2175,
                    "nodeType": "Block",
                    "src": "30491:154:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 2161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2158,
                            "name": "feeGrowthGlobal0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 383,
                            "src": "30505:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2159,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30528:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthGlobalX128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1624,
                            "src": "30528:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30505:48:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2162,
                        "nodeType": "ExpressionStatement",
                        "src": "30505:48:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2163,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30571:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2164,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "protocolFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1626,
                            "src": "30571:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30591:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30571:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2174,
                        "nodeType": "IfStatement",
                        "src": "30567:67:1",
                        "trueBody": {
                          "expression": {
                            "id": 2172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 2167,
                                "name": "protocolFees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 396,
                                "src": "30594:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                  "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                                }
                              },
                              "id": 2169,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "token0",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 389,
                              "src": "30594:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "expression": {
                                "id": 2170,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "30617:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 2171,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "protocolFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1626,
                              "src": "30617:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "30594:40:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2173,
                          "nodeType": "ExpressionStatement",
                          "src": "30594:40:1"
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 2216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 2195,
                          "name": "amount0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1661,
                          "src": "30816:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "id": 2196,
                          "name": "amount1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1663,
                          "src": "30825:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 2197,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "30815:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                        "typeString": "tuple(int256,int256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2198,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1649,
                          "src": "30836:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 2199,
                          "name": "exactInput",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1736,
                          "src": "30850:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "30836:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "components": [
                          {
                            "expression": {
                              "id": 2208,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30965:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2209,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amountCalculated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1618,
                            "src": "30965:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2210,
                              "name": "amountSpecified",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "30989:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 2211,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "31007:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 2212,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountSpecifiedRemaining",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1616,
                              "src": "31007:30:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "30989:48:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 2214,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "30964:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                          "typeString": "tuple(int256,int256)"
                        }
                      },
                      "id": 2215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "30836:202:1",
                      "trueExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 2204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2201,
                              "name": "amountSpecified",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "30876:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 2202,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "30894:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.SwapState memory"
                                }
                              },
                              "id": 2203,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountSpecifiedRemaining",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1616,
                              "src": "30894:30:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "30876:48:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          {
                            "expression": {
                              "id": 2205,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "30926:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                                "typeString": "struct MoonwalkerPool.SwapState memory"
                              }
                            },
                            "id": 2206,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amountCalculated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1618,
                            "src": "30926:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 2207,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "30875:74:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                          "typeString": "tuple(int256,int256)"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                        "typeString": "tuple(int256,int256)"
                      }
                    },
                    "src": "30815:223:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2217,
                  "nodeType": "ExpressionStatement",
                  "src": "30815:223:1"
                },
                {
                  "condition": {
                    "id": 2218,
                    "name": "zeroForOne",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1649,
                    "src": "31101:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2310,
                    "nodeType": "Block",
                    "src": "31452:333:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 2267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2265,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1661,
                            "src": "31470:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31480:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "31470:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2280,
                        "nodeType": "IfStatement",
                        "src": "31466:82:1",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2271,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 344,
                                "src": "31511:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2272,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1647,
                                "src": "31519:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 2276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "31538:8:1",
                                    "subExpression": {
                                      "id": 2275,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1661,
                                      "src": "31539:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 2274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "31530:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 2273,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "31530:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31530:17:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2268,
                                "name": "TransferHelper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7221,
                                "src": "31483:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                  "typeString": "type(library TransferHelper)"
                                }
                              },
                              "id": 2270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "31483:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,address,uint256)"
                              }
                            },
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31483:65:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2279,
                          "nodeType": "ExpressionStatement",
                          "src": "31483:65:1"
                        }
                      },
                      {
                        "assignments": [
                          2282
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2282,
                            "mutability": "mutable",
                            "name": "balance1Before",
                            "nodeType": "VariableDeclaration",
                            "scope": 2310,
                            "src": "31563:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2281,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31563:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2285,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2283,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 624,
                            "src": "31588:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31588:10:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31563:35:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2291,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1661,
                              "src": "31671:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 2292,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "31680:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 2293,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1655,
                              "src": "31689:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 2287,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "31636:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "31636:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 2286,
                                "name": "IMoonwalkerSwapCallback",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3101,
                                "src": "31612:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMoonwalkerSwapCallback_$3101_$",
                                  "typeString": "type(contract IMoonwalkerSwapCallback)"
                                }
                              },
                              "id": 2289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31612:35:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMoonwalkerSwapCallback_$3101",
                                "typeString": "contract IMoonwalkerSwapCallback"
                              }
                            },
                            "id": 2290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "moonwalkerSwapCallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "31612:58:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (int256,int256,bytes memory) external"
                            }
                          },
                          "id": 2294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31612:82:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2295,
                        "nodeType": "ExpressionStatement",
                        "src": "31612:82:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2301,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1663,
                                        "src": "31743:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 2300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "31735:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 2299,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "31735:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2302,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "31735:16:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2297,
                                    "name": "balance1Before",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2282,
                                    "src": "31716:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4067,
                                  "src": "31716:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31716:36:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2304,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 624,
                                  "src": "31756:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31756:10:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "31716:50:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494941",
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31768:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                "typeString": "literal_string \"IIA\""
                              },
                              "value": "IIA"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                "typeString": "literal_string \"IIA\""
                              }
                            ],
                            "id": 2296,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "31708:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31708:66:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2309,
                        "nodeType": "ExpressionStatement",
                        "src": "31708:66:1"
                      }
                    ]
                  },
                  "id": 2311,
                  "nodeType": "IfStatement",
                  "src": "31097:688:1",
                  "trueBody": {
                    "id": 2264,
                    "nodeType": "Block",
                    "src": "31113:333:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 2221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2219,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "31131:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31141:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "31131:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2234,
                        "nodeType": "IfStatement",
                        "src": "31127:82:1",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2225,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 348,
                                "src": "31172:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2226,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1647,
                                "src": "31180:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 2230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "31199:8:1",
                                    "subExpression": {
                                      "id": 2229,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1663,
                                      "src": "31200:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 2228,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "31191:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 2227,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "31191:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31191:17:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2222,
                                "name": "TransferHelper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7221,
                                "src": "31144:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                  "typeString": "type(library TransferHelper)"
                                }
                              },
                              "id": 2224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "31144:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,address,uint256)"
                              }
                            },
                            "id": 2232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31144:65:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2233,
                          "nodeType": "ExpressionStatement",
                          "src": "31144:65:1"
                        }
                      },
                      {
                        "assignments": [
                          2236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2236,
                            "mutability": "mutable",
                            "name": "balance0Before",
                            "nodeType": "VariableDeclaration",
                            "scope": 2264,
                            "src": "31224:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2235,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31224:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2239,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2237,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 582,
                            "src": "31249:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31249:10:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31224:35:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2245,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1661,
                              "src": "31332:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 2246,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "31341:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 2247,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1655,
                              "src": "31350:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 2241,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "31297:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2242,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "31297:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 2240,
                                "name": "IMoonwalkerSwapCallback",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3101,
                                "src": "31273:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMoonwalkerSwapCallback_$3101_$",
                                  "typeString": "type(contract IMoonwalkerSwapCallback)"
                                }
                              },
                              "id": 2243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31273:35:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMoonwalkerSwapCallback_$3101",
                                "typeString": "contract IMoonwalkerSwapCallback"
                              }
                            },
                            "id": 2244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "moonwalkerSwapCallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "31273:58:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (int256,int256,bytes memory) external"
                            }
                          },
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31273:82:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2249,
                        "nodeType": "ExpressionStatement",
                        "src": "31273:82:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2255,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1661,
                                        "src": "31404:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 2254,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "31396:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 2253,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "31396:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2256,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "31396:16:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2251,
                                    "name": "balance0Before",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2236,
                                    "src": "31377:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4067,
                                  "src": "31377:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31377:36:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2258,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 582,
                                  "src": "31417:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31417:10:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "31377:50:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494941",
                              "id": 2261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31429:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                "typeString": "literal_string \"IIA\""
                              },
                              "value": "IIA"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                "typeString": "literal_string \"IIA\""
                              }
                            ],
                            "id": 2250,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "31369:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31369:66:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2263,
                        "nodeType": "ExpressionStatement",
                        "src": "31369:66:1"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2313,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "31805:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "31805:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2315,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1647,
                        "src": "31817:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2316,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "31828:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "id": 2317,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1663,
                        "src": "31837:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "expression": {
                          "id": 2318,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "31846:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 2319,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sqrtPriceX96",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1620,
                        "src": "31846:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "expression": {
                          "id": 2320,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "31866:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 2321,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidity",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1628,
                        "src": "31866:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "expression": {
                          "id": 2322,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "31883:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapState_$1629_memory_ptr",
                            "typeString": "struct MoonwalkerPool.SwapState memory"
                          }
                        },
                        "id": 2323,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tick",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1622,
                        "src": "31883:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      ],
                      "id": 2312,
                      "name": "Swap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3302,
                      "src": "31800:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_uint160_$_t_uint128_$_t_int24_$returns$__$",
                        "typeString": "function (address,address,int256,int256,uint160,uint128,int24)"
                      }
                    },
                    "id": 2324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31800:94:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2325,
                  "nodeType": "EmitStatement",
                  "src": "31795:99:1"
                },
                {
                  "expression": {
                    "id": 2330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2326,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "31904:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 2328,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "unlocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 374,
                      "src": "31904:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 2329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "31921:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "31904:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2331,
                  "nodeType": "ExpressionStatement",
                  "src": "31904:21:1"
                }
              ]
            },
            "documentation": {
              "id": 1645,
              "nodeType": "StructuredDocumentation",
              "src": "22883:38:1",
              "text": "@inheritdoc IMoonwalkerPoolActions"
            },
            "functionSelector": "128acb08",
            "id": 2333,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1659,
                "modifierName": {
                  "id": 1658,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "23112:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "23112:14:1"
              }
            ],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1657,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "23103:8:1"
            },
            "parameters": {
              "id": 1656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1647,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "22949:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1646,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22949:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1649,
                  "mutability": "mutable",
                  "name": "zeroForOne",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "22976:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1648,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22976:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1651,
                  "mutability": "mutable",
                  "name": "amountSpecified",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "23001:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1650,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23001:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1653,
                  "mutability": "mutable",
                  "name": "sqrtPriceLimitX96",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "23033:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 1652,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "23033:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1655,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "23068:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1654,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "23068:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22939:154:1"
            },
            "returnParameters": {
              "id": 1664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1661,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "23136:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1660,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23136:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1663,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "23152:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1662,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23152:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23135:32:1"
            },
            "scope": 2754,
            "src": "22926:9006:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3190
            ],
            "body": {
              "id": 2577,
              "nodeType": "Block",
              "src": "32146:1750:1",
              "statements": [
                {
                  "assignments": [
                    2351
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2351,
                      "mutability": "mutable",
                      "name": "_liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32156:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 2350,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "32156:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2353,
                  "initialValue": {
                    "id": 2352,
                    "name": "liquidity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 400,
                    "src": "32177:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32156:30:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2355,
                          "name": "_liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2351,
                          "src": "32204:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 2356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32217:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32204:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c",
                        "id": 2358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32220:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                          "typeString": "literal_string \"L\""
                        },
                        "value": "L"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                          "typeString": "literal_string \"L\""
                        }
                      ],
                      "id": 2354,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "32196:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32196:28:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2360,
                  "nodeType": "ExpressionStatement",
                  "src": "32196:28:1"
                },
                {
                  "assignments": [
                    2362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2362,
                      "mutability": "mutable",
                      "name": "fee0",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32235:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2361,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32235:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2369,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2365,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "32276:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2366,
                        "name": "fee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 352,
                        "src": "32285:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "hexValue": "316536",
                        "id": 2367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32290:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000_by_1",
                          "typeString": "int_const 1000000"
                        },
                        "value": "1e6"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000_by_1",
                          "typeString": "int_const 1000000"
                        }
                      ],
                      "expression": {
                        "id": 2363,
                        "name": "FullMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3990,
                        "src": "32250:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FullMath_$3990_$",
                          "typeString": "type(library FullMath)"
                        }
                      },
                      "id": 2364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mulDivRoundingUp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3989,
                      "src": "32250:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32250:44:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32235:59:1"
                },
                {
                  "assignments": [
                    2371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2371,
                      "mutability": "mutable",
                      "name": "fee1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32304:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32304:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2378,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2374,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "32345:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2375,
                        "name": "fee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 352,
                        "src": "32354:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      {
                        "hexValue": "316536",
                        "id": 2376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32359:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000_by_1",
                          "typeString": "int_const 1000000"
                        },
                        "value": "1e6"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000_by_1",
                          "typeString": "int_const 1000000"
                        }
                      ],
                      "expression": {
                        "id": 2372,
                        "name": "FullMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3990,
                        "src": "32319:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FullMath_$3990_$",
                          "typeString": "type(library FullMath)"
                        }
                      },
                      "id": 2373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mulDivRoundingUp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3989,
                      "src": "32319:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32319:44:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32304:59:1"
                },
                {
                  "assignments": [
                    2380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2380,
                      "mutability": "mutable",
                      "name": "balance0Before",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32373:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2379,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32373:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2383,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2381,
                      "name": "balance0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 582,
                      "src": "32398:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32398:10:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32373:35:1"
                },
                {
                  "assignments": [
                    2385
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2385,
                      "mutability": "mutable",
                      "name": "balance1Before",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32418:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2384,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32418:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2388,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2386,
                      "name": "balance1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 624,
                      "src": "32443:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32443:10:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32418:35:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2389,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2338,
                      "src": "32468:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32478:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32468:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2400,
                  "nodeType": "IfStatement",
                  "src": "32464:72:1",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 2395,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 344,
                          "src": "32509:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 2396,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "32517:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 2397,
                          "name": "amount0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2338,
                          "src": "32528:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2392,
                          "name": "TransferHelper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7221,
                          "src": "32481:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                            "typeString": "type(library TransferHelper)"
                          }
                        },
                        "id": 2394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "safeTransfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7220,
                        "src": "32481:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,address,uint256)"
                        }
                      },
                      "id": 2398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32481:55:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2399,
                    "nodeType": "ExpressionStatement",
                    "src": "32481:55:1"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2401,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2340,
                      "src": "32550:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32560:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32550:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2412,
                  "nodeType": "IfStatement",
                  "src": "32546:72:1",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 2407,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 348,
                          "src": "32591:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 2408,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2336,
                          "src": "32599:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 2409,
                          "name": "amount1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2340,
                          "src": "32610:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2404,
                          "name": "TransferHelper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7221,
                          "src": "32563:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                            "typeString": "type(library TransferHelper)"
                          }
                        },
                        "id": 2406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "safeTransfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7220,
                        "src": "32563:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,address,uint256)"
                        }
                      },
                      "id": 2410,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32563:55:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2411,
                    "nodeType": "ExpressionStatement",
                    "src": "32563:55:1"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2418,
                        "name": "fee0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2362,
                        "src": "32690:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2419,
                        "name": "fee1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2371,
                        "src": "32696:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2420,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2342,
                        "src": "32702:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 2414,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "32654:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "32654:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 2413,
                          "name": "IMoonwalkerFlashCallback",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3073,
                          "src": "32629:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMoonwalkerFlashCallback_$3073_$",
                            "typeString": "type(contract IMoonwalkerFlashCallback)"
                          }
                        },
                        "id": 2416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32629:36:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMoonwalkerFlashCallback_$3073",
                          "typeString": "contract IMoonwalkerFlashCallback"
                        }
                      },
                      "id": 2417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "moonwalkerFlashCallback",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3072,
                      "src": "32629:60:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 2421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32629:78:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2422,
                  "nodeType": "ExpressionStatement",
                  "src": "32629:78:1"
                },
                {
                  "assignments": [
                    2424
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2424,
                      "mutability": "mutable",
                      "name": "balance0After",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32718:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32718:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2427,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2425,
                      "name": "balance0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 582,
                      "src": "32742:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32742:10:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32718:34:1"
                },
                {
                  "assignments": [
                    2429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2429,
                      "mutability": "mutable",
                      "name": "balance1After",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "32762:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2428,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32762:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2432,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2430,
                      "name": "balance1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 624,
                      "src": "32786:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32786:10:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32762:34:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 2436,
                              "name": "fee0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2362,
                              "src": "32834:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2434,
                              "name": "balance0Before",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2380,
                              "src": "32815:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4067,
                            "src": "32815:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32815:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "id": 2438,
                          "name": "balance0After",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2424,
                          "src": "32843:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32815:41:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4630",
                        "id": 2440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32858:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5",
                          "typeString": "literal_string \"F0\""
                        },
                        "value": "F0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5",
                          "typeString": "literal_string \"F0\""
                        }
                      ],
                      "id": 2433,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "32807:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32807:56:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2442,
                  "nodeType": "ExpressionStatement",
                  "src": "32807:56:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 2446,
                              "name": "fee1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2371,
                              "src": "32900:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2444,
                              "name": "balance1Before",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2385,
                              "src": "32881:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4067,
                            "src": "32881:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32881:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "id": 2448,
                          "name": "balance1After",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2429,
                          "src": "32909:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32881:41:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4631",
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32924:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf",
                          "typeString": "literal_string \"F1\""
                        },
                        "value": "F1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf",
                          "typeString": "literal_string \"F1\""
                        }
                      ],
                      "id": 2443,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "32873:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32873:56:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2452,
                  "nodeType": "ExpressionStatement",
                  "src": "32873:56:1"
                },
                {
                  "assignments": [
                    2454
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2454,
                      "mutability": "mutable",
                      "name": "paid0",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "33028:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2453,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "33028:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2458,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2455,
                      "name": "balance0After",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2424,
                      "src": "33044:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 2456,
                      "name": "balance0Before",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2380,
                      "src": "33060:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "33044:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "33028:46:1"
                },
                {
                  "assignments": [
                    2460
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2460,
                      "mutability": "mutable",
                      "name": "paid1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2577,
                      "src": "33084:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2459,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "33084:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2464,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2461,
                      "name": "balance1After",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2429,
                      "src": "33100:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 2462,
                      "name": "balance1Before",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2385,
                      "src": "33116:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "33100:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "33084:46:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2465,
                      "name": "paid0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2454,
                      "src": "33145:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "33153:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "33145:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2515,
                  "nodeType": "IfStatement",
                  "src": "33141:332:1",
                  "trueBody": {
                    "id": 2514,
                    "nodeType": "Block",
                    "src": "33156:317:1",
                    "statements": [
                      {
                        "assignments": [
                          2469
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2469,
                            "mutability": "mutable",
                            "name": "feeProtocol0",
                            "nodeType": "VariableDeclaration",
                            "scope": 2514,
                            "src": "33170:18:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 2468,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "33170:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2474,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 2473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2470,
                              "name": "slot0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 379,
                              "src": "33191:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                              }
                            },
                            "id": 2471,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 372,
                            "src": "33191:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "hexValue": "3136",
                            "id": 2472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33211:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "33191:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33170:43:1"
                      },
                      {
                        "assignments": [
                          2476
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2476,
                            "mutability": "mutable",
                            "name": "fees0",
                            "nodeType": "VariableDeclaration",
                            "scope": 2514,
                            "src": "33227:13:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2475,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "33227:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2485,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2477,
                              "name": "feeProtocol0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2469,
                              "src": "33243:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 2478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "33259:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "33243:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2481,
                              "name": "paid0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "33267:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 2482,
                              "name": "feeProtocol0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2469,
                              "src": "33275:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "33267:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "33243:44:1",
                          "trueExpression": {
                            "hexValue": "30",
                            "id": 2480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33263:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33227:60:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 2488,
                                "name": "fees0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2476,
                                "src": "33313:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33305:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 2486,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "33305:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33305:14:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33322:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "33305:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2501,
                        "nodeType": "IfStatement",
                        "src": "33301:61:1",
                        "trueBody": {
                          "expression": {
                            "id": 2499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 2492,
                                "name": "protocolFees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 396,
                                "src": "33325:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                  "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                                }
                              },
                              "id": 2494,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "token0",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 389,
                              "src": "33325:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 2497,
                                  "name": "fees0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2476,
                                  "src": "33356:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "33348:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                },
                                "typeName": {
                                  "id": 2495,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "33348:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33348:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "33325:37:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2500,
                          "nodeType": "ExpressionStatement",
                          "src": "33325:37:1"
                        }
                      },
                      {
                        "expression": {
                          "id": 2512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2502,
                            "name": "feeGrowthGlobal0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 383,
                            "src": "33376:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2505,
                                  "name": "paid0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2454,
                                  "src": "33416:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 2506,
                                  "name": "fees0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2476,
                                  "src": "33424:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33416:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2508,
                                  "name": "FixedPoint128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3807,
                                  "src": "33431:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$3807_$",
                                    "typeString": "type(library FixedPoint128)"
                                  }
                                },
                                "id": 2509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Q128",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3806,
                                "src": "33431:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 2510,
                                "name": "_liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2351,
                                "src": "33451:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "id": 2503,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3990,
                                "src": "33400:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3990_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 2504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3946,
                              "src": "33400:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33400:62:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33376:86:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2513,
                        "nodeType": "ExpressionStatement",
                        "src": "33376:86:1"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2516,
                      "name": "paid1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2460,
                      "src": "33486:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "33494:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "33486:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2566,
                  "nodeType": "IfStatement",
                  "src": "33482:332:1",
                  "trueBody": {
                    "id": 2565,
                    "nodeType": "Block",
                    "src": "33497:317:1",
                    "statements": [
                      {
                        "assignments": [
                          2520
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2520,
                            "mutability": "mutable",
                            "name": "feeProtocol1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2565,
                            "src": "33511:18:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 2519,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "33511:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2525,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 2524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2521,
                              "name": "slot0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 379,
                              "src": "33532:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slot0_$375_storage",
                                "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                              }
                            },
                            "id": 2522,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 372,
                            "src": "33532:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "34",
                            "id": 2523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33553:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "33532:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33511:43:1"
                      },
                      {
                        "assignments": [
                          2527
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2527,
                            "mutability": "mutable",
                            "name": "fees1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2565,
                            "src": "33568:13:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2526,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "33568:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2536,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2528,
                              "name": "feeProtocol1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "33584:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 2529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "33600:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "33584:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2532,
                              "name": "paid1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2460,
                              "src": "33608:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 2533,
                              "name": "feeProtocol1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "33616:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "33608:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "33584:44:1",
                          "trueExpression": {
                            "hexValue": "30",
                            "id": 2531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33604:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33568:60:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 2539,
                                "name": "fees1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2527,
                                "src": "33654:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33646:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 2537,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "33646:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33646:14:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33663:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "33646:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2552,
                        "nodeType": "IfStatement",
                        "src": "33642:61:1",
                        "trueBody": {
                          "expression": {
                            "id": 2550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "id": 2543,
                                "name": "protocolFees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 396,
                                "src": "33666:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                  "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                                }
                              },
                              "id": 2545,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "token1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 391,
                              "src": "33666:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 2548,
                                  "name": "fees1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2527,
                                  "src": "33697:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "33689:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                },
                                "typeName": {
                                  "id": 2546,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "33689:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33689:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "33666:37:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2551,
                          "nodeType": "ExpressionStatement",
                          "src": "33666:37:1"
                        }
                      },
                      {
                        "expression": {
                          "id": 2563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2553,
                            "name": "feeGrowthGlobal1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 387,
                            "src": "33717:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2556,
                                  "name": "paid1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2460,
                                  "src": "33757:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 2557,
                                  "name": "fees1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2527,
                                  "src": "33765:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33757:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 2559,
                                  "name": "FixedPoint128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3807,
                                  "src": "33772:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$3807_$",
                                    "typeString": "type(library FixedPoint128)"
                                  }
                                },
                                "id": 2560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Q128",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3806,
                                "src": "33772:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 2561,
                                "name": "_liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2351,
                                "src": "33792:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "id": 2554,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3990,
                                "src": "33741:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3990_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3946,
                              "src": "33741:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33741:62:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33717:86:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2564,
                        "nodeType": "ExpressionStatement",
                        "src": "33717:86:1"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2568,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "33835:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "33835:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2570,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2336,
                        "src": "33847:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2571,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "33858:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2572,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "33867:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2573,
                        "name": "paid0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "33876:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2574,
                        "name": "paid1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "33883:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2567,
                      "name": "Flash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3317,
                      "src": "33829:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33829:60:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2576,
                  "nodeType": "EmitStatement",
                  "src": "33824:65:1"
                }
              ]
            },
            "documentation": {
              "id": 2334,
              "nodeType": "StructuredDocumentation",
              "src": "31938:38:1",
              "text": "@inheritdoc IMoonwalkerPoolActions"
            },
            "functionSelector": "490e6cbc",
            "id": 2578,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 2346,
                "modifierName": {
                  "id": 2345,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "32126:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "32126:4:1"
              },
              {
                "id": 2348,
                "modifierName": {
                  "id": 2347,
                  "name": "noDelegateCall",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2863,
                  "src": "32131:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "32131:14:1"
              }
            ],
            "name": "flash",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2344,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "32117:8:1"
            },
            "parameters": {
              "id": 2343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2336,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 2578,
                  "src": "32005:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2335,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32005:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2338,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2578,
                  "src": "32032:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2337,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32032:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2340,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2578,
                  "src": "32057:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2339,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32057:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2342,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2578,
                  "src": "32082:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2341,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "32082:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31995:112:1"
            },
            "returnParameters": {
              "id": 2349,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32146:0:1"
            },
            "scope": 2754,
            "src": "31981:1915:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3398
            ],
            "body": {
              "id": 2648,
              "nodeType": "Block",
              "src": "34054:409:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2618,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2592,
                                  "name": "feeProtocol0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2581,
                                  "src": "34086:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34102:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "34086:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 2601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 2597,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2595,
                                        "name": "feeProtocol0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2581,
                                        "src": "34108:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "hexValue": "34",
                                        "id": 2596,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "34124:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "src": "34108:17:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 2600,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2598,
                                        "name": "feeProtocol0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2581,
                                        "src": "34129:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "hexValue": "3130",
                                        "id": 2599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "34145:2:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "src": "34129:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "34108:39:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 2602,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34107:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34086:62:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2604,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34085:64:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2605,
                                  "name": "feeProtocol1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2583,
                                  "src": "34170:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34186:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "34170:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 2614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 2610,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2608,
                                        "name": "feeProtocol1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2583,
                                        "src": "34192:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "hexValue": "34",
                                        "id": 2609,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "34208:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "src": "34192:17:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 2613,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2611,
                                        "name": "feeProtocol1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2583,
                                        "src": "34213:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "hexValue": "3130",
                                        "id": 2612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "34229:2:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "src": "34213:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "34192:39:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 2615,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34191:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34170:62:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2617,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34169:64:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "34085:148:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2591,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "34064:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34064:179:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2620,
                  "nodeType": "ExpressionStatement",
                  "src": "34064:179:1"
                },
                {
                  "assignments": [
                    2622
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2622,
                      "mutability": "mutable",
                      "name": "feeProtocolOld",
                      "nodeType": "VariableDeclaration",
                      "scope": 2648,
                      "src": "34253:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2621,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "34253:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2625,
                  "initialValue": {
                    "expression": {
                      "id": 2623,
                      "name": "slot0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 379,
                      "src": "34276:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slot0_$375_storage",
                        "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                      }
                    },
                    "id": 2624,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "feeProtocol",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 372,
                    "src": "34276:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "34253:40:1"
                },
                {
                  "expression": {
                    "id": 2635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2626,
                        "name": "slot0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 379,
                        "src": "34303:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slot0_$375_storage",
                          "typeString": "struct MoonwalkerPool.Slot0 storage ref"
                        }
                      },
                      "id": 2628,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeProtocol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 372,
                      "src": "34303:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 2634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 2629,
                        "name": "feeProtocol0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2581,
                        "src": "34323:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2630,
                              "name": "feeProtocol1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2583,
                              "src": "34339:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 2631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34355:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "34339:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "id": 2633,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "34338:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "34323:34:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "34303:54:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2636,
                  "nodeType": "ExpressionStatement",
                  "src": "34303:54:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 2640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2638,
                          "name": "feeProtocolOld",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2622,
                          "src": "34387:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "hexValue": "3136",
                          "id": 2639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "34404:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "16"
                        },
                        "src": "34387:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 2643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2641,
                          "name": "feeProtocolOld",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2622,
                          "src": "34408:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "hexValue": "34",
                          "id": 2642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "34426:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "src": "34408:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 2644,
                        "name": "feeProtocol0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2581,
                        "src": "34429:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 2645,
                        "name": "feeProtocol1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2583,
                        "src": "34443:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 2637,
                      "name": "SetFeeProtocol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3335,
                      "src": "34372:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_uint8_$returns$__$",
                        "typeString": "function (uint8,uint8,uint8,uint8)"
                      }
                    },
                    "id": 2646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34372:84:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2647,
                  "nodeType": "EmitStatement",
                  "src": "34367:89:1"
                }
              ]
            },
            "documentation": {
              "id": 2579,
              "nodeType": "StructuredDocumentation",
              "src": "33902:43:1",
              "text": "@inheritdoc IMoonwalkerPoolOwnerActions"
            },
            "functionSelector": "8206a4d1",
            "id": 2649,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 2587,
                "modifierName": {
                  "id": 2586,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "34032:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "34032:4:1"
              },
              {
                "id": 2589,
                "modifierName": {
                  "id": 2588,
                  "name": "onlyFactoryOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 463,
                  "src": "34037:16:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "34037:16:1"
              }
            ],
            "name": "setFeeProtocol",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2585,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "34023:8:1"
            },
            "parameters": {
              "id": 2584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2581,
                  "mutability": "mutable",
                  "name": "feeProtocol0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "33974:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2580,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "33974:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2583,
                  "mutability": "mutable",
                  "name": "feeProtocol1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2649,
                  "src": "33994:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2582,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "33994:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33973:40:1"
            },
            "returnParameters": {
              "id": 2590,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34054:0:1"
            },
            "scope": 2754,
            "src": "33950:513:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3412
            ],
            "body": {
              "id": 2752,
              "nodeType": "Block",
              "src": "34726:808:1",
              "statements": [
                {
                  "expression": {
                    "id": 2677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2668,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2664,
                      "src": "34736:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2669,
                          "name": "amount0Requested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2654,
                          "src": "34746:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "expression": {
                            "id": 2670,
                            "name": "protocolFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 396,
                            "src": "34765:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                              "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                            }
                          },
                          "id": 2671,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token0",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 389,
                          "src": "34765:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "34746:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "id": 2675,
                        "name": "amount0Requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2654,
                        "src": "34809:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 2676,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "34746:79:1",
                      "trueExpression": {
                        "expression": {
                          "id": 2673,
                          "name": "protocolFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 396,
                          "src": "34787:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                            "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                          }
                        },
                        "id": 2674,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "token0",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 389,
                        "src": "34787:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "34736:89:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2678,
                  "nodeType": "ExpressionStatement",
                  "src": "34736:89:1"
                },
                {
                  "expression": {
                    "id": 2688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2679,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2666,
                      "src": "34835:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2680,
                          "name": "amount1Requested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2656,
                          "src": "34845:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "expression": {
                            "id": 2681,
                            "name": "protocolFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 396,
                            "src": "34864:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                              "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                            }
                          },
                          "id": 2682,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token1",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 391,
                          "src": "34864:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "34845:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "id": 2686,
                        "name": "amount1Requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2656,
                        "src": "34908:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 2687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "34845:79:1",
                      "trueExpression": {
                        "expression": {
                          "id": 2684,
                          "name": "protocolFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 396,
                          "src": "34886:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                            "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                          }
                        },
                        "id": 2685,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "token1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 391,
                        "src": "34886:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "34835:89:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2689,
                  "nodeType": "ExpressionStatement",
                  "src": "34835:89:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 2692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2690,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2664,
                      "src": "34939:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2691,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "34949:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "34939:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2716,
                  "nodeType": "IfStatement",
                  "src": "34935:256:1",
                  "trueBody": {
                    "id": 2715,
                    "nodeType": "Block",
                    "src": "34952:239:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2693,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2664,
                            "src": "34970:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 2694,
                              "name": "protocolFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "34981:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                              }
                            },
                            "id": 2695,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 389,
                            "src": "34981:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "34970:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2700,
                        "nodeType": "IfStatement",
                        "src": "34966:45:1",
                        "trueBody": {
                          "expression": {
                            "id": 2698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "35002:9:1",
                            "subExpression": {
                              "id": 2697,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "35002:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2699,
                          "nodeType": "ExpressionStatement",
                          "src": "35002:9:1"
                        }
                      },
                      {
                        "expression": {
                          "id": 2705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 2701,
                              "name": "protocolFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "35081:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                              }
                            },
                            "id": 2703,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 389,
                            "src": "35081:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 2704,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2664,
                            "src": "35104:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "35081:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 2706,
                        "nodeType": "ExpressionStatement",
                        "src": "35081:30:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2710,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 344,
                              "src": "35153:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2711,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2652,
                              "src": "35161:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2712,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "35172:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "id": 2707,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7221,
                              "src": "35125:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7220,
                            "src": "35125:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35125:55:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2714,
                        "nodeType": "ExpressionStatement",
                        "src": "35125:55:1"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2717,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2666,
                      "src": "35204:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 2718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "35214:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "35204:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2743,
                  "nodeType": "IfStatement",
                  "src": "35200:256:1",
                  "trueBody": {
                    "id": 2742,
                    "nodeType": "Block",
                    "src": "35217:239:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2720,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2666,
                            "src": "35235:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 2721,
                              "name": "protocolFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "35246:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                              }
                            },
                            "id": 2722,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 391,
                            "src": "35246:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "35235:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2727,
                        "nodeType": "IfStatement",
                        "src": "35231:45:1",
                        "trueBody": {
                          "expression": {
                            "id": 2725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "35267:9:1",
                            "subExpression": {
                              "id": 2724,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2666,
                              "src": "35267:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 2726,
                          "nodeType": "ExpressionStatement",
                          "src": "35267:9:1"
                        }
                      },
                      {
                        "expression": {
                          "id": 2732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 2728,
                              "name": "protocolFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "35346:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ProtocolFees_$392_storage",
                                "typeString": "struct MoonwalkerPool.ProtocolFees storage ref"
                              }
                            },
                            "id": 2730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 391,
                            "src": "35346:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 2731,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2666,
                            "src": "35369:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "35346:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 2733,
                        "nodeType": "ExpressionStatement",
                        "src": "35346:30:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2737,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 348,
                              "src": "35418:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2738,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2652,
                              "src": "35426:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2739,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2666,
                              "src": "35437:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "id": 2734,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7221,
                              "src": "35390:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7221_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7220,
                            "src": "35390:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35390:55:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2741,
                        "nodeType": "ExpressionStatement",
                        "src": "35390:55:1"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2745,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "35487:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2746,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "35487:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2747,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2652,
                        "src": "35499:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2748,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "35510:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "id": 2749,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2666,
                        "src": "35519:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2744,
                      "name": "CollectProtocol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3346,
                      "src": "35471:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint128_$returns$__$",
                        "typeString": "function (address,address,uint128,uint128)"
                      }
                    },
                    "id": 2750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35471:56:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2751,
                  "nodeType": "EmitStatement",
                  "src": "35466:61:1"
                }
              ]
            },
            "documentation": {
              "id": 2650,
              "nodeType": "StructuredDocumentation",
              "src": "34469:43:1",
              "text": "@inheritdoc IMoonwalkerPoolOwnerActions"
            },
            "functionSelector": "85b66729",
            "id": 2753,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 2660,
                "modifierName": {
                  "id": 2659,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 447,
                  "src": "34661:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "34661:4:1"
              },
              {
                "id": 2662,
                "modifierName": {
                  "id": 2661,
                  "name": "onlyFactoryOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 463,
                  "src": "34666:16:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "34666:16:1"
              }
            ],
            "name": "collectProtocol",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2658,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "34652:8:1"
            },
            "parameters": {
              "id": 2657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2652,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "34551:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2651,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34551:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2654,
                  "mutability": "mutable",
                  "name": "amount0Requested",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "34578:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2653,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "34578:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2656,
                  "mutability": "mutable",
                  "name": "amount1Requested",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "34612:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2655,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "34612:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34541:101:1"
            },
            "returnParameters": {
              "id": 2667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2664,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "34692:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2663,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "34692:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2666,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "34709:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2665,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "34709:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34691:34:1"
            },
            "scope": 2754,
            "src": "34517:1017:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 2755,
        "src": "929:34607:1"
      }
    ],
    "src": "32:35505:1"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/MoonwalkerPool.sol",
      "exportedSymbols": {
        "BitMath": [
          3800
        ],
        "FixedPoint128": [
          3807
        ],
        "FixedPoint96": [
          3817
        ],
        "FullMath": [
          3990
        ],
        "IERC20Minimal": [
          2936
        ],
        "IMoonwalkerFactory": [
          3019
        ],
        "IMoonwalkerFlashCallback": [
          3073
        ],
        "IMoonwalkerMintCallback": [
          3087
        ],
        "IMoonwalkerPool": [
          3041
        ],
        "IMoonwalkerPoolActions": [
          3197
        ],
        "IMoonwalkerPoolDeployer": [
          3059
        ],
        "IMoonwalkerPoolDerivedState": [
          3228
        ],
        "IMoonwalkerPoolEvents": [
          3347
        ],
        "IMoonwalkerPoolImmutables": [
          3387
        ],
        "IMoonwalkerPoolOwnerActions": [
          3413
        ],
        "IMoonwalkerPoolState": [
          3521
        ],
        "IMoonwalkerSwapCallback": [
          3101
        ],
        "LiquidityMath": [
          4042
        ],
        "LowGasSafeMath": [
          4172
        ],
        "MoonwalkerPool": [
          2754
        ],
        "NoDelegateCall": [
          2864
        ],
        "Oracle": [
          4907
        ],
        "Position": [
          5080
        ],
        "SafeCast": [
          5150
        ],
        "SqrtPriceMath": [
          5666
        ],
        "SwapMath": [
          5927
        ],
        "Tick": [
          6379
        ],
        "TickBitmap": [
          6635
        ],
        "TickMath": [
          7170
        ],
        "TransferHelper": [
          7221
        ],
        "UnsafeMath": [
          7237
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "=",
            "0.7",
            ".6"
          ]
        },
        "id": 276,
        "name": "PragmaDirective",
        "src": "32:23:1"
      },
      {
        "attributes": {
          "SourceUnit": 3042,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPool.sol",
          "file": "./interfaces/IMoonwalkerPool.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 277,
        "name": "ImportDirective",
        "src": "57:42:1"
      },
      {
        "attributes": {
          "SourceUnit": 2865,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/NoDelegateCall.sol",
          "file": "./NoDelegateCall.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 278,
        "name": "ImportDirective",
        "src": "100:30:1"
      },
      {
        "attributes": {
          "SourceUnit": 4173,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol",
          "file": "./libraries/LowGasSafeMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 279,
        "name": "ImportDirective",
        "src": "131:40:1"
      },
      {
        "attributes": {
          "SourceUnit": 5151,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol",
          "file": "./libraries/SafeCast.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 280,
        "name": "ImportDirective",
        "src": "172:34:1"
      },
      {
        "attributes": {
          "SourceUnit": 6380,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol",
          "file": "./libraries/Tick.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 281,
        "name": "ImportDirective",
        "src": "207:30:1"
      },
      {
        "attributes": {
          "SourceUnit": 6636,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickBitmap.sol",
          "file": "./libraries/TickBitmap.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 282,
        "name": "ImportDirective",
        "src": "238:36:1"
      },
      {
        "attributes": {
          "SourceUnit": 5081,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Position.sol",
          "file": "./libraries/Position.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 283,
        "name": "ImportDirective",
        "src": "275:34:1"
      },
      {
        "attributes": {
          "SourceUnit": 4908,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Oracle.sol",
          "file": "./libraries/Oracle.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 284,
        "name": "ImportDirective",
        "src": "310:32:1"
      },
      {
        "attributes": {
          "SourceUnit": 3991,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FullMath.sol",
          "file": "./libraries/FullMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 285,
        "name": "ImportDirective",
        "src": "343:34:1"
      },
      {
        "attributes": {
          "SourceUnit": 3808,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/FixedPoint128.sol",
          "file": "./libraries/FixedPoint128.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 286,
        "name": "ImportDirective",
        "src": "378:39:1"
      },
      {
        "attributes": {
          "SourceUnit": 7222,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TransferHelper.sol",
          "file": "./libraries/TransferHelper.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 287,
        "name": "ImportDirective",
        "src": "418:40:1"
      },
      {
        "attributes": {
          "SourceUnit": 7171,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol",
          "file": "./libraries/TickMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 288,
        "name": "ImportDirective",
        "src": "459:34:1"
      },
      {
        "attributes": {
          "SourceUnit": 4043,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol",
          "file": "./libraries/LiquidityMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 289,
        "name": "ImportDirective",
        "src": "494:39:1"
      },
      {
        "attributes": {
          "SourceUnit": 5667,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SqrtPriceMath.sol",
          "file": "./libraries/SqrtPriceMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 290,
        "name": "ImportDirective",
        "src": "534:39:1"
      },
      {
        "attributes": {
          "SourceUnit": 5928,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SwapMath.sol",
          "file": "./libraries/SwapMath.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 291,
        "name": "ImportDirective",
        "src": "574:34:1"
      },
      {
        "attributes": {
          "SourceUnit": 3060,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerPoolDeployer.sol",
          "file": "./interfaces/IMoonwalkerPoolDeployer.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 292,
        "name": "ImportDirective",
        "src": "609:50:1"
      },
      {
        "attributes": {
          "SourceUnit": 3020,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IMoonwalkerFactory.sol",
          "file": "./interfaces/IMoonwalkerFactory.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 293,
        "name": "ImportDirective",
        "src": "660:45:1"
      },
      {
        "attributes": {
          "SourceUnit": 2937,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/IERC20Minimal.sol",
          "file": "./interfaces/IERC20Minimal.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 294,
        "name": "ImportDirective",
        "src": "706:40:1"
      },
      {
        "attributes": {
          "SourceUnit": 3088,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerMintCallback.sol",
          "file": "./interfaces/callback/IMoonwalkerMintCallback.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 295,
        "name": "ImportDirective",
        "src": "747:59:1"
      },
      {
        "attributes": {
          "SourceUnit": 3102,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerSwapCallback.sol",
          "file": "./interfaces/callback/IMoonwalkerSwapCallback.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 296,
        "name": "ImportDirective",
        "src": "807:59:1"
      },
      {
        "attributes": {
          "SourceUnit": 3074,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/interfaces/callback/IMoonwalkerFlashCallback.sol",
          "file": "./interfaces/callback/IMoonwalkerFlashCallback.sol",
          "scope": 2755,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 297,
        "name": "ImportDirective",
        "src": "867:60:1"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            2864,
            3041,
            3197,
            3228,
            3347,
            3387,
            3413,
            3521
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            2754,
            2864,
            3041,
            3347,
            3413,
            3197,
            3228,
            3521,
            3387
          ],
          "name": "MoonwalkerPool",
          "scope": 2755
        },
        "children": [
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "IMoonwalkerPool",
                  "referencedDeclaration": 3041,
                  "type": "contract IMoonwalkerPool"
                },
                "id": 298,
                "name": "UserDefinedTypeName",
                "src": "956:15:1"
              }
            ],
            "id": 299,
            "name": "InheritanceSpecifier",
            "src": "956:15:1"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "NoDelegateCall",
                  "referencedDeclaration": 2864,
                  "type": "contract NoDelegateCall"
                },
                "id": 300,
                "name": "UserDefinedTypeName",
                "src": "973:14:1"
              }
            ],
            "id": 301,
            "name": "InheritanceSpecifier",
            "src": "973:14:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "LowGasSafeMath",
                  "referencedDeclaration": 4172,
                  "type": "library LowGasSafeMath"
                },
                "id": 302,
                "name": "UserDefinedTypeName",
                "src": "1000:14:1"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 303,
                "name": "ElementaryTypeName",
                "src": "1019:7:1"
              }
            ],
            "id": 304,
            "name": "UsingForDirective",
            "src": "994:33:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "LowGasSafeMath",
                  "referencedDeclaration": 4172,
                  "type": "library LowGasSafeMath"
                },
                "id": 305,
                "name": "UserDefinedTypeName",
                "src": "1038:14:1"
              },
              {
                "attributes": {
                  "name": "int256",
                  "type": "int256"
                },
                "id": 306,
                "name": "ElementaryTypeName",
                "src": "1057:6:1"
              }
            ],
            "id": 307,
            "name": "UsingForDirective",
            "src": "1032:32:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeCast",
                  "referencedDeclaration": 5150,
                  "type": "library SafeCast"
                },
                "id": 308,
                "name": "UserDefinedTypeName",
                "src": "1075:8:1"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 309,
                "name": "ElementaryTypeName",
                "src": "1088:7:1"
              }
            ],
            "id": 310,
            "name": "UsingForDirective",
            "src": "1069:27:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeCast",
                  "referencedDeclaration": 5150,
                  "type": "library SafeCast"
                },
                "id": 311,
                "name": "UserDefinedTypeName",
                "src": "1107:8:1"
              },
              {
                "attributes": {
                  "name": "int256",
                  "type": "int256"
                },
                "id": 312,
                "name": "ElementaryTypeName",
                "src": "1120:6:1"
              }
            ],
            "id": 313,
            "name": "UsingForDirective",
            "src": "1101:26:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "Tick",
                  "referencedDeclaration": 6379,
                  "type": "library Tick"
                },
                "id": 314,
                "name": "UserDefinedTypeName",
                "src": "1138:4:1"
              },
              {
                "attributes": {
                  "type": "mapping(int24 => struct Tick.Info)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 315,
                    "name": "ElementaryTypeName",
                    "src": "1155:5:1"
                  },
                  {
                    "attributes": {
                      "name": "Tick.Info",
                      "referencedDeclaration": 5957,
                      "type": "struct Tick.Info"
                    },
                    "id": 316,
                    "name": "UserDefinedTypeName",
                    "src": "1164:9:1"
                  }
                ],
                "id": 317,
                "name": "Mapping",
                "src": "1147:27:1"
              }
            ],
            "id": 318,
            "name": "UsingForDirective",
            "src": "1132:43:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "TickBitmap",
                  "referencedDeclaration": 6635,
                  "type": "library TickBitmap"
                },
                "id": 319,
                "name": "UserDefinedTypeName",
                "src": "1186:10:1"
              },
              {
                "attributes": {
                  "type": "mapping(int16 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int16",
                      "type": "int16"
                    },
                    "id": 320,
                    "name": "ElementaryTypeName",
                    "src": "1209:5:1"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 321,
                    "name": "ElementaryTypeName",
                    "src": "1218:7:1"
                  }
                ],
                "id": 322,
                "name": "Mapping",
                "src": "1201:25:1"
              }
            ],
            "id": 323,
            "name": "UsingForDirective",
            "src": "1180:47:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "Position",
                  "referencedDeclaration": 5080,
                  "type": "library Position"
                },
                "id": 324,
                "name": "UserDefinedTypeName",
                "src": "1238:8:1"
              },
              {
                "attributes": {
                  "type": "mapping(bytes32 => struct Position.Info)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 325,
                    "name": "ElementaryTypeName",
                    "src": "1259:7:1"
                  },
                  {
                    "attributes": {
                      "name": "Position.Info",
                      "referencedDeclaration": 4924,
                      "type": "struct Position.Info"
                    },
                    "id": 326,
                    "name": "UserDefinedTypeName",
                    "src": "1270:13:1"
                  }
                ],
                "id": 327,
                "name": "Mapping",
                "src": "1251:33:1"
              }
            ],
            "id": 328,
            "name": "UsingForDirective",
            "src": "1232:53:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "Position",
                  "referencedDeclaration": 5080,
                  "type": "library Position"
                },
                "id": 329,
                "name": "UserDefinedTypeName",
                "src": "1296:8:1"
              },
              {
                "attributes": {
                  "name": "Position.Info",
                  "referencedDeclaration": 4924,
                  "type": "struct Position.Info"
                },
                "id": 330,
                "name": "UserDefinedTypeName",
                "src": "1309:13:1"
              }
            ],
            "id": 331,
            "name": "UsingForDirective",
            "src": "1290:33:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "Oracle",
                  "referencedDeclaration": 4907,
                  "type": "library Oracle"
                },
                "id": 332,
                "name": "UserDefinedTypeName",
                "src": "1334:6:1"
              },
              {
                "attributes": {
                  "type": "struct Oracle.Observation[65535]"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "Oracle.Observation",
                      "referencedDeclaration": 4184,
                      "type": "struct Oracle.Observation"
                    },
                    "id": 333,
                    "name": "UserDefinedTypeName",
                    "src": "1345:18:1"
                  },
                  {
                    "attributes": {
                      "hexvalue": "3635353335",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "number",
                      "type": "int_const 65535",
                      "value": "65535"
                    },
                    "id": 334,
                    "name": "Literal",
                    "src": "1364:5:1"
                  }
                ],
                "id": 335,
                "name": "ArrayTypeName",
                "src": "1345:25:1"
              }
            ],
            "id": 336,
            "name": "UsingForDirective",
            "src": "1328:43:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3356
              ],
              "constant": false,
              "functionSelector": "c45a0155",
              "mutability": "immutable",
              "name": "factory",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 338,
                "name": "ElementaryTypeName",
                "src": "1423:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 339,
                "name": "OverrideSpecifier",
                "src": "1448:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 337,
                "name": "StructuredDocumentation",
                "src": "1377:41:1"
              }
            ],
            "id": 340,
            "name": "VariableDeclaration",
            "src": "1423:41:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3362
              ],
              "constant": false,
              "functionSelector": "0dfe1681",
              "mutability": "immutable",
              "name": "token0",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 342,
                "name": "ElementaryTypeName",
                "src": "1516:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 343,
                "name": "OverrideSpecifier",
                "src": "1541:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 341,
                "name": "StructuredDocumentation",
                "src": "1470:41:1"
              }
            ],
            "id": 344,
            "name": "VariableDeclaration",
            "src": "1516:40:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3368
              ],
              "constant": false,
              "functionSelector": "d21220a7",
              "mutability": "immutable",
              "name": "token1",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 346,
                "name": "ElementaryTypeName",
                "src": "1608:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 347,
                "name": "OverrideSpecifier",
                "src": "1633:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 345,
                "name": "StructuredDocumentation",
                "src": "1562:41:1"
              }
            ],
            "id": 348,
            "name": "VariableDeclaration",
            "src": "1608:40:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3374
              ],
              "constant": false,
              "functionSelector": "ddca3f43",
              "mutability": "immutable",
              "name": "fee",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint24",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint24",
                  "type": "uint24"
                },
                "id": 350,
                "name": "ElementaryTypeName",
                "src": "1700:6:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 351,
                "name": "OverrideSpecifier",
                "src": "1724:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 349,
                "name": "StructuredDocumentation",
                "src": "1654:41:1"
              }
            ],
            "id": 352,
            "name": "VariableDeclaration",
            "src": "1700:36:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3380
              ],
              "constant": false,
              "functionSelector": "d0c93a7c",
              "mutability": "immutable",
              "name": "tickSpacing",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "int24",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "int24",
                  "type": "int24"
                },
                "id": 354,
                "name": "ElementaryTypeName",
                "src": "1789:5:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 355,
                "name": "OverrideSpecifier",
                "src": "1812:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 353,
                "name": "StructuredDocumentation",
                "src": "1743:41:1"
              }
            ],
            "id": 356,
            "name": "VariableDeclaration",
            "src": "1789:43:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3386
              ],
              "constant": false,
              "functionSelector": "70cf754a",
              "mutability": "immutable",
              "name": "maxLiquidityPerTick",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint128",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint128",
                  "type": "uint128"
                },
                "id": 358,
                "name": "ElementaryTypeName",
                "src": "1885:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 359,
                "name": "OverrideSpecifier",
                "src": "1910:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolImmutables"
                },
                "id": 357,
                "name": "StructuredDocumentation",
                "src": "1839:41:1"
              }
            ],
            "id": 360,
            "name": "VariableDeclaration",
            "src": "1885:53:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.Slot0",
              "name": "Slot0",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 361,
                    "name": "ElementaryTypeName",
                    "src": "1997:7:1"
                  }
                ],
                "id": 362,
                "name": "VariableDeclaration",
                "src": "1997:20:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tick",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int24",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 363,
                    "name": "ElementaryTypeName",
                    "src": "2055:5:1"
                  }
                ],
                "id": 364,
                "name": "VariableDeclaration",
                "src": "2055:10:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "observationIndex",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 365,
                    "name": "ElementaryTypeName",
                    "src": "2144:6:1"
                  }
                ],
                "id": 366,
                "name": "VariableDeclaration",
                "src": "2144:23:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "observationCardinality",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 367,
                    "name": "ElementaryTypeName",
                    "src": "2253:6:1"
                  }
                ],
                "id": 368,
                "name": "VariableDeclaration",
                "src": "2253:29:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "observationCardinalityNext",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 369,
                    "name": "ElementaryTypeName",
                    "src": "2385:6:1"
                  }
                ],
                "id": 370,
                "name": "VariableDeclaration",
                "src": "2385:33:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeProtocol",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 371,
                    "name": "ElementaryTypeName",
                    "src": "2572:5:1"
                  }
                ],
                "id": 372,
                "name": "VariableDeclaration",
                "src": "2572:17:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "scope": 375,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 373,
                    "name": "ElementaryTypeName",
                    "src": "2637:4:1"
                  }
                ],
                "id": 374,
                "name": "VariableDeclaration",
                "src": "2637:13:1"
              }
            ],
            "id": 375,
            "name": "StructDefinition",
            "src": "1945:712:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3434
              ],
              "constant": false,
              "functionSelector": "3850c7bd",
              "mutability": "mutable",
              "name": "slot0",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct MoonwalkerPool.Slot0",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "Slot0",
                  "referencedDeclaration": 375,
                  "type": "struct MoonwalkerPool.Slot0"
                },
                "id": 377,
                "name": "UserDefinedTypeName",
                "src": "2703:5:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 378,
                "name": "OverrideSpecifier",
                "src": "2716:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 376,
                "name": "StructuredDocumentation",
                "src": "2662:36:1"
              }
            ],
            "id": 379,
            "name": "VariableDeclaration",
            "src": "2703:27:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3440
              ],
              "constant": false,
              "functionSelector": "f3058399",
              "mutability": "mutable",
              "name": "feeGrowthGlobal0X128",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 381,
                "name": "ElementaryTypeName",
                "src": "2778:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 382,
                "name": "OverrideSpecifier",
                "src": "2793:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 380,
                "name": "StructuredDocumentation",
                "src": "2737:36:1"
              }
            ],
            "id": 383,
            "name": "VariableDeclaration",
            "src": "2778:44:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3446
              ],
              "constant": false,
              "functionSelector": "46141319",
              "mutability": "mutable",
              "name": "feeGrowthGlobal1X128",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 385,
                "name": "ElementaryTypeName",
                "src": "2869:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 386,
                "name": "OverrideSpecifier",
                "src": "2884:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 384,
                "name": "StructuredDocumentation",
                "src": "2828:36:1"
              }
            ],
            "id": 387,
            "name": "VariableDeclaration",
            "src": "2869:44:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.ProtocolFees",
              "name": "ProtocolFees",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "token0",
                  "scope": 392,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 388,
                    "name": "ElementaryTypeName",
                    "src": "3006:7:1"
                  }
                ],
                "id": 389,
                "name": "VariableDeclaration",
                "src": "3006:14:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "token1",
                  "scope": 392,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 390,
                    "name": "ElementaryTypeName",
                    "src": "3030:7:1"
                  }
                ],
                "id": 391,
                "name": "VariableDeclaration",
                "src": "3030:14:1"
              }
            ],
            "id": 392,
            "name": "StructDefinition",
            "src": "2976:75:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3454
              ],
              "constant": false,
              "functionSelector": "1ad8b03b",
              "mutability": "mutable",
              "name": "protocolFees",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct MoonwalkerPool.ProtocolFees",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "ProtocolFees",
                  "referencedDeclaration": 392,
                  "type": "struct MoonwalkerPool.ProtocolFees"
                },
                "id": 394,
                "name": "UserDefinedTypeName",
                "src": "3097:12:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 395,
                "name": "OverrideSpecifier",
                "src": "3117:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 393,
                "name": "StructuredDocumentation",
                "src": "3056:36:1"
              }
            ],
            "id": 396,
            "name": "VariableDeclaration",
            "src": "3097:41:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3460
              ],
              "constant": false,
              "functionSelector": "1a686502",
              "mutability": "mutable",
              "name": "liquidity",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint128",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint128",
                  "type": "uint128"
                },
                "id": 398,
                "name": "ElementaryTypeName",
                "src": "3186:7:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 399,
                "name": "OverrideSpecifier",
                "src": "3201:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 397,
                "name": "StructuredDocumentation",
                "src": "3145:36:1"
              }
            ],
            "id": 400,
            "name": "VariableDeclaration",
            "src": "3186:33:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3482
              ],
              "constant": false,
              "functionSelector": "f30dba93",
              "mutability": "mutable",
              "name": "ticks",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(int24 => struct Tick.Info)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(int24 => struct Tick.Info)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 402,
                    "name": "ElementaryTypeName",
                    "src": "3275:5:1"
                  },
                  {
                    "attributes": {
                      "name": "Tick.Info",
                      "referencedDeclaration": 5957,
                      "type": "struct Tick.Info"
                    },
                    "id": 403,
                    "name": "UserDefinedTypeName",
                    "src": "3284:9:1"
                  }
                ],
                "id": 404,
                "name": "Mapping",
                "src": "3267:27:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 405,
                "name": "OverrideSpecifier",
                "src": "3302:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 401,
                "name": "StructuredDocumentation",
                "src": "3226:36:1"
              }
            ],
            "id": 406,
            "name": "VariableDeclaration",
            "src": "3267:49:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3490
              ],
              "constant": false,
              "functionSelector": "5339c296",
              "mutability": "mutable",
              "name": "tickBitmap",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(int16 => uint256)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(int16 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int16",
                      "type": "int16"
                    },
                    "id": 408,
                    "name": "ElementaryTypeName",
                    "src": "3371:5:1"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 409,
                    "name": "ElementaryTypeName",
                    "src": "3380:7:1"
                  }
                ],
                "id": 410,
                "name": "Mapping",
                "src": "3363:25:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 411,
                "name": "OverrideSpecifier",
                "src": "3396:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 407,
                "name": "StructuredDocumentation",
                "src": "3322:36:1"
              }
            ],
            "id": 412,
            "name": "VariableDeclaration",
            "src": "3363:52:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3506
              ],
              "constant": false,
              "functionSelector": "514ea4bf",
              "mutability": "mutable",
              "name": "positions",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => struct Position.Info)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => struct Position.Info)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 414,
                    "name": "ElementaryTypeName",
                    "src": "3470:7:1"
                  },
                  {
                    "attributes": {
                      "name": "Position.Info",
                      "referencedDeclaration": 4924,
                      "type": "struct Position.Info"
                    },
                    "id": 415,
                    "name": "UserDefinedTypeName",
                    "src": "3481:13:1"
                  }
                ],
                "id": 416,
                "name": "Mapping",
                "src": "3462:33:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 417,
                "name": "OverrideSpecifier",
                "src": "3503:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 413,
                "name": "StructuredDocumentation",
                "src": "3421:36:1"
              }
            ],
            "id": 418,
            "name": "VariableDeclaration",
            "src": "3462:59:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3520
              ],
              "constant": false,
              "functionSelector": "252c09d7",
              "mutability": "mutable",
              "name": "observations",
              "scope": 2754,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Oracle.Observation[65535]",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "struct Oracle.Observation[65535]"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "Oracle.Observation",
                      "referencedDeclaration": 4184,
                      "type": "struct Oracle.Observation"
                    },
                    "id": 420,
                    "name": "UserDefinedTypeName",
                    "src": "3568:18:1"
                  },
                  {
                    "attributes": {
                      "hexvalue": "3635353335",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "number",
                      "type": "int_const 65535",
                      "value": "65535"
                    },
                    "id": 421,
                    "name": "Literal",
                    "src": "3587:5:1"
                  }
                ],
                "id": 422,
                "name": "ArrayTypeName",
                "src": "3568:25:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 423,
                "name": "OverrideSpecifier",
                "src": "3601:8:1"
              },
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolState"
                },
                "id": 419,
                "name": "StructuredDocumentation",
                "src": "3527:36:1"
              }
            ],
            "id": 424,
            "name": "VariableDeclaration",
            "src": "3568:54:1"
          },
          {
            "attributes": {
              "name": "lock",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n we use balance checks to determine the payment status of interactions such as mint, swap and flash."
                },
                "id": 425,
                "name": "StructuredDocumentation",
                "src": "3629:343:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 426,
                "name": "ParameterList",
                "src": "3990:2:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                                  "typeString": "literal_string \"LOK\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 427,
                            "name": "Identifier",
                            "src": "4003:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 428,
                                "name": "Identifier",
                                "src": "4011:5:1"
                              }
                            ],
                            "id": 429,
                            "name": "MemberAccess",
                            "src": "4011:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4c4f4b",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"LOK\"",
                              "value": "LOK"
                            },
                            "id": 430,
                            "name": "Literal",
                            "src": "4027:5:1"
                          }
                        ],
                        "id": 431,
                        "name": "FunctionCall",
                        "src": "4003:30:1"
                      }
                    ],
                    "id": 432,
                    "name": "ExpressionStatement",
                    "src": "4003:30:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 433,
                                "name": "Identifier",
                                "src": "4043:5:1"
                              }
                            ],
                            "id": 435,
                            "name": "MemberAccess",
                            "src": "4043:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 436,
                            "name": "Literal",
                            "src": "4060:5:1"
                          }
                        ],
                        "id": 437,
                        "name": "Assignment",
                        "src": "4043:22:1"
                      }
                    ],
                    "id": 438,
                    "name": "ExpressionStatement",
                    "src": "4043:22:1"
                  },
                  {
                    "id": 439,
                    "name": "PlaceholderStatement",
                    "src": "4075:1:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 440,
                                "name": "Identifier",
                                "src": "4086:5:1"
                              }
                            ],
                            "id": 442,
                            "name": "MemberAccess",
                            "src": "4086:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 443,
                            "name": "Literal",
                            "src": "4103:4:1"
                          }
                        ],
                        "id": 444,
                        "name": "Assignment",
                        "src": "4086:21:1"
                      }
                    ],
                    "id": 445,
                    "name": "ExpressionStatement",
                    "src": "4086:21:1"
                  }
                ],
                "id": 446,
                "name": "Block",
                "src": "3993:121:1"
              }
            ],
            "id": 447,
            "name": "ModifierDefinition",
            "src": "3977:137:1"
          },
          {
            "attributes": {
              "name": "onlyFactoryOwner",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Prevents calling a function from anyone except the address returned by IMoonwalkerFactory#owner()"
                },
                "id": 448,
                "name": "StructuredDocumentation",
                "src": "4120:106:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 449,
                "name": "ParameterList",
                "src": "4256:2:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 450,
                            "name": "Identifier",
                            "src": "4269:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967281,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 451,
                                    "name": "Identifier",
                                    "src": "4277:3:1"
                                  }
                                ],
                                "id": 452,
                                "name": "MemberAccess",
                                "src": "4277:10:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "owner",
                                      "referencedDeclaration": 2972,
                                      "type": "function () view external returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IMoonwalkerFactory",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3019,
                                              "type": "type(contract IMoonwalkerFactory)",
                                              "value": "IMoonwalkerFactory"
                                            },
                                            "id": 453,
                                            "name": "Identifier",
                                            "src": "4291:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 340,
                                              "type": "address",
                                              "value": "factory"
                                            },
                                            "id": 454,
                                            "name": "Identifier",
                                            "src": "4310:7:1"
                                          }
                                        ],
                                        "id": 455,
                                        "name": "FunctionCall",
                                        "src": "4291:27:1"
                                      }
                                    ],
                                    "id": 456,
                                    "name": "MemberAccess",
                                    "src": "4291:33:1"
                                  }
                                ],
                                "id": 457,
                                "name": "FunctionCall",
                                "src": "4291:35:1"
                              }
                            ],
                            "id": 458,
                            "name": "BinaryOperation",
                            "src": "4277:49:1"
                          }
                        ],
                        "id": 459,
                        "name": "FunctionCall",
                        "src": "4269:58:1"
                      }
                    ],
                    "id": 460,
                    "name": "ExpressionStatement",
                    "src": "4269:58:1"
                  },
                  {
                    "id": 461,
                    "name": "PlaceholderStatement",
                    "src": "4337:1:1"
                  }
                ],
                "id": 462,
                "name": "Block",
                "src": "4259:86:1"
              }
            ],
            "id": 463,
            "name": "ModifierDefinition",
            "src": "4231:114:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 464,
                "name": "ParameterList",
                "src": "4362:2:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 465,
                "name": "ParameterList",
                "src": "4365:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        467
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_tickSpacing",
                          "scope": 494,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 466,
                            "name": "ElementaryTypeName",
                            "src": "4375:5:1"
                          }
                        ],
                        "id": 467,
                        "name": "VariableDeclaration",
                        "src": "4375:18:1"
                      }
                    ],
                    "id": 468,
                    "name": "VariableDeclarationStatement",
                    "src": "4375:18:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(address,address,address,uint24,int24)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 340,
                                  "type": "address",
                                  "value": "factory"
                                },
                                "id": 469,
                                "name": "Identifier",
                                "src": "4404:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 344,
                                  "type": "address",
                                  "value": "token0"
                                },
                                "id": 470,
                                "name": "Identifier",
                                "src": "4413:6:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 348,
                                  "type": "address",
                                  "value": "token1"
                                },
                                "id": 471,
                                "name": "Identifier",
                                "src": "4421:6:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 352,
                                  "type": "uint24",
                                  "value": "fee"
                                },
                                "id": 472,
                                "name": "Identifier",
                                "src": "4429:3:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 467,
                                  "type": "int24",
                                  "value": "_tickSpacing"
                                },
                                "id": 473,
                                "name": "Identifier",
                                "src": "4434:12:1"
                              }
                            ],
                            "id": 474,
                            "name": "TupleExpression",
                            "src": "4403:44:1"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple(address,address,address,uint24,int24)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "parameters",
                                  "referencedDeclaration": 3058,
                                  "type": "function () view external returns (address,address,address,uint24,int24)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract IMoonwalkerPoolDeployer",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3059,
                                          "type": "type(contract IMoonwalkerPoolDeployer)",
                                          "value": "IMoonwalkerPoolDeployer"
                                        },
                                        "id": 475,
                                        "name": "Identifier",
                                        "src": "4450:23:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4294967281,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 476,
                                            "name": "Identifier",
                                            "src": "4474:3:1"
                                          }
                                        ],
                                        "id": 477,
                                        "name": "MemberAccess",
                                        "src": "4474:10:1"
                                      }
                                    ],
                                    "id": 478,
                                    "name": "FunctionCall",
                                    "src": "4450:35:1"
                                  }
                                ],
                                "id": 479,
                                "name": "MemberAccess",
                                "src": "4450:46:1"
                              }
                            ],
                            "id": 480,
                            "name": "FunctionCall",
                            "src": "4450:48:1"
                          }
                        ],
                        "id": 481,
                        "name": "Assignment",
                        "src": "4403:95:1"
                      }
                    ],
                    "id": 482,
                    "name": "ExpressionStatement",
                    "src": "4403:95:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "int24"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 356,
                              "type": "int24",
                              "value": "tickSpacing"
                            },
                            "id": 483,
                            "name": "Identifier",
                            "src": "4508:11:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 467,
                              "type": "int24",
                              "value": "_tickSpacing"
                            },
                            "id": 484,
                            "name": "Identifier",
                            "src": "4522:12:1"
                          }
                        ],
                        "id": 485,
                        "name": "Assignment",
                        "src": "4508:26:1"
                      }
                    ],
                    "id": 486,
                    "name": "ExpressionStatement",
                    "src": "4508:26:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 360,
                              "type": "uint128",
                              "value": "maxLiquidityPerTick"
                            },
                            "id": 487,
                            "name": "Identifier",
                            "src": "4545:19:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint128",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tickSpacingToMaxLiquidityPerTick",
                                  "referencedDeclaration": 6008,
                                  "type": "function (int24) pure returns (uint128)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6379,
                                      "type": "type(library Tick)",
                                      "value": "Tick"
                                    },
                                    "id": 488,
                                    "name": "Identifier",
                                    "src": "4567:4:1"
                                  }
                                ],
                                "id": 489,
                                "name": "MemberAccess",
                                "src": "4567:37:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 467,
                                  "type": "int24",
                                  "value": "_tickSpacing"
                                },
                                "id": 490,
                                "name": "Identifier",
                                "src": "4605:12:1"
                              }
                            ],
                            "id": 491,
                            "name": "FunctionCall",
                            "src": "4567:51:1"
                          }
                        ],
                        "id": 492,
                        "name": "Assignment",
                        "src": "4545:73:1"
                      }
                    ],
                    "id": 493,
                    "name": "ExpressionStatement",
                    "src": "4545:73:1"
                  }
                ],
                "id": 494,
                "name": "Block",
                "src": "4365:260:1"
              }
            ],
            "id": 495,
            "name": "FunctionDefinition",
            "src": "4351:274:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "checkTicks",
              "scope": 2754,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Common checks for valid tick inputs."
                },
                "id": 496,
                "name": "StructuredDocumentation",
                "src": "4631:45:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 497,
                        "name": "ElementaryTypeName",
                        "src": "4701:5:1"
                      }
                    ],
                    "id": 498,
                    "name": "VariableDeclaration",
                    "src": "4701:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 499,
                        "name": "ElementaryTypeName",
                        "src": "4718:5:1"
                      }
                    ],
                    "id": 500,
                    "name": "VariableDeclaration",
                    "src": "4718:15:1"
                  }
                ],
                "id": 501,
                "name": "ParameterList",
                "src": "4700:34:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 502,
                "name": "ParameterList",
                "src": "4748:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b",
                                  "typeString": "literal_string \"TLU\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 503,
                            "name": "Identifier",
                            "src": "4758:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 498,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 504,
                                "name": "Identifier",
                                "src": "4766:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 500,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 505,
                                "name": "Identifier",
                                "src": "4778:9:1"
                              }
                            ],
                            "id": 506,
                            "name": "BinaryOperation",
                            "src": "4766:21:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "544c55",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"TLU\"",
                              "value": "TLU"
                            },
                            "id": 507,
                            "name": "Literal",
                            "src": "4789:5:1"
                          }
                        ],
                        "id": 508,
                        "name": "FunctionCall",
                        "src": "4758:37:1"
                      }
                    ],
                    "id": 509,
                    "name": "ExpressionStatement",
                    "src": "4758:37:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5",
                                  "typeString": "literal_string \"TLM\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 510,
                            "name": "Identifier",
                            "src": "4805:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 498,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 511,
                                "name": "Identifier",
                                "src": "4813:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "MIN_TICK",
                                  "referencedDeclaration": 6643,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7170,
                                      "type": "type(library TickMath)",
                                      "value": "TickMath"
                                    },
                                    "id": 512,
                                    "name": "Identifier",
                                    "src": "4826:8:1"
                                  }
                                ],
                                "id": 513,
                                "name": "MemberAccess",
                                "src": "4826:17:1"
                              }
                            ],
                            "id": 514,
                            "name": "BinaryOperation",
                            "src": "4813:30:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "544c4d",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"TLM\"",
                              "value": "TLM"
                            },
                            "id": 515,
                            "name": "Literal",
                            "src": "4845:5:1"
                          }
                        ],
                        "id": 516,
                        "name": "FunctionCall",
                        "src": "4805:46:1"
                      }
                    ],
                    "id": 517,
                    "name": "ExpressionStatement",
                    "src": "4805:46:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359",
                                  "typeString": "literal_string \"TUM\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 518,
                            "name": "Identifier",
                            "src": "4861:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 500,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 519,
                                "name": "Identifier",
                                "src": "4869:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "MAX_TICK",
                                  "referencedDeclaration": 6648,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7170,
                                      "type": "type(library TickMath)",
                                      "value": "TickMath"
                                    },
                                    "id": 520,
                                    "name": "Identifier",
                                    "src": "4882:8:1"
                                  }
                                ],
                                "id": 521,
                                "name": "MemberAccess",
                                "src": "4882:17:1"
                              }
                            ],
                            "id": 522,
                            "name": "BinaryOperation",
                            "src": "4869:30:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "54554d",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"TUM\"",
                              "value": "TUM"
                            },
                            "id": 523,
                            "name": "Literal",
                            "src": "4901:5:1"
                          }
                        ],
                        "id": 524,
                        "name": "FunctionCall",
                        "src": "4861:46:1"
                      }
                    ],
                    "id": 525,
                    "name": "ExpressionStatement",
                    "src": "4861:46:1"
                  }
                ],
                "id": 526,
                "name": "Block",
                "src": "4748:166:1"
              }
            ],
            "id": 527,
            "name": "FunctionDefinition",
            "src": "4681:233:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_blockTimestamp",
              "scope": 2754,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests."
                },
                "id": 528,
                "name": "StructuredDocumentation",
                "src": "4920:110:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 529,
                "name": "ParameterList",
                "src": "5059:2:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 540,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 530,
                        "name": "ElementaryTypeName",
                        "src": "5093:6:1"
                      }
                    ],
                    "id": 531,
                    "name": "VariableDeclaration",
                    "src": "5093:6:1"
                  }
                ],
                "id": 532,
                "name": "ParameterList",
                "src": "5092:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 532
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint32",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint32"
                                },
                                "id": 533,
                                "name": "ElementaryTypeName",
                                "src": "5118:6:1"
                              }
                            ],
                            "id": 534,
                            "name": "ElementaryTypeNameExpression",
                            "src": "5118:6:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967292,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 535,
                                "name": "Identifier",
                                "src": "5125:5:1"
                              }
                            ],
                            "id": 536,
                            "name": "MemberAccess",
                            "src": "5125:15:1"
                          }
                        ],
                        "id": 537,
                        "name": "FunctionCall",
                        "src": "5118:23:1"
                      }
                    ],
                    "id": 538,
                    "name": "Return",
                    "src": "5111:30:1"
                  }
                ],
                "id": 539,
                "name": "Block",
                "src": "5101:72:1"
              }
            ],
            "id": 540,
            "name": "FunctionDefinition",
            "src": "5035:138:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "balance0",
              "scope": 2754,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Get the pool's balance of token0\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check"
                },
                "id": 541,
                "name": "StructuredDocumentation",
                "src": "5179:172:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 542,
                "name": "ParameterList",
                "src": "5373:2:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 582,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 543,
                        "name": "ElementaryTypeName",
                        "src": "5398:7:1"
                      }
                    ],
                    "id": 544,
                    "name": "VariableDeclaration",
                    "src": "5398:7:1"
                  }
                ],
                "id": 545,
                "name": "ParameterList",
                "src": "5397:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        547,
                        549
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "success",
                          "scope": 581,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 546,
                            "name": "ElementaryTypeName",
                            "src": "5418:4:1"
                          }
                        ],
                        "id": 547,
                        "name": "VariableDeclaration",
                        "src": "5418:12:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "data",
                          "scope": 581,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 548,
                            "name": "ElementaryTypeName",
                            "src": "5432:5:1"
                          }
                        ],
                        "id": 549,
                        "name": "VariableDeclaration",
                        "src": "5432:17:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(bool,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "staticcall",
                              "type": "function (bytes memory) view returns (bool,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 344,
                                  "type": "address",
                                  "value": "token0"
                                },
                                "id": 550,
                                "name": "Identifier",
                                "src": "5465:6:1"
                              }
                            ],
                            "id": 551,
                            "name": "MemberAccess",
                            "src": "5465:17:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodeWithSelector",
                                  "type": "function (bytes4) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967295,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 552,
                                    "name": "Identifier",
                                    "src": "5483:3:1"
                                  }
                                ],
                                "id": 553,
                                "name": "MemberAccess",
                                "src": "5483:22:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "selector",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 2875,
                                      "type": "function IERC20Minimal.balanceOf(address) view returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2936,
                                          "type": "type(contract IERC20Minimal)",
                                          "value": "IERC20Minimal"
                                        },
                                        "id": 554,
                                        "name": "Identifier",
                                        "src": "5506:13:1"
                                      }
                                    ],
                                    "id": 555,
                                    "name": "MemberAccess",
                                    "src": "5506:23:1"
                                  }
                                ],
                                "id": 556,
                                "name": "MemberAccess",
                                "src": "5506:32:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                          "typeString": "contract MoonwalkerPool"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 557,
                                        "name": "ElementaryTypeName",
                                        "src": "5540:7:1"
                                      }
                                    ],
                                    "id": 558,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "5540:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967268,
                                      "type": "contract MoonwalkerPool",
                                      "value": "this"
                                    },
                                    "id": 559,
                                    "name": "Identifier",
                                    "src": "5548:4:1"
                                  }
                                ],
                                "id": 560,
                                "name": "FunctionCall",
                                "src": "5540:13:1"
                              }
                            ],
                            "id": 561,
                            "name": "FunctionCall",
                            "src": "5483:71:1"
                          }
                        ],
                        "id": 562,
                        "name": "FunctionCall",
                        "src": "5465:90:1"
                      }
                    ],
                    "id": 563,
                    "name": "VariableDeclarationStatement",
                    "src": "5417:138:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 564,
                            "name": "Identifier",
                            "src": "5565:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 547,
                                  "type": "bool",
                                  "value": "success"
                                },
                                "id": 565,
                                "name": "Identifier",
                                "src": "5573:7:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 549,
                                          "type": "bytes memory",
                                          "value": "data"
                                        },
                                        "id": 566,
                                        "name": "Identifier",
                                        "src": "5584:4:1"
                                      }
                                    ],
                                    "id": 567,
                                    "name": "MemberAccess",
                                    "src": "5584:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 568,
                                    "name": "Literal",
                                    "src": "5599:2:1"
                                  }
                                ],
                                "id": 569,
                                "name": "BinaryOperation",
                                "src": "5584:17:1"
                              }
                            ],
                            "id": 570,
                            "name": "BinaryOperation",
                            "src": "5573:28:1"
                          }
                        ],
                        "id": 571,
                        "name": "FunctionCall",
                        "src": "5565:37:1"
                      }
                    ],
                    "id": 572,
                    "name": "ExpressionStatement",
                    "src": "5565:37:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 545
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "decode",
                              "type": "function () pure"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967295,
                                  "type": "abi",
                                  "value": "abi"
                                },
                                "id": 573,
                                "name": "Identifier",
                                "src": "5619:3:1"
                              }
                            ],
                            "id": 574,
                            "name": "MemberAccess",
                            "src": "5619:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 549,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 575,
                            "name": "Identifier",
                            "src": "5630:4:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 576,
                                    "name": "ElementaryTypeName",
                                    "src": "5637:7:1"
                                  }
                                ],
                                "id": 577,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5637:7:1"
                              }
                            ],
                            "id": 578,
                            "name": "TupleExpression",
                            "src": "5636:9:1"
                          }
                        ],
                        "id": 579,
                        "name": "FunctionCall",
                        "src": "5619:27:1"
                      }
                    ],
                    "id": 580,
                    "name": "Return",
                    "src": "5612:34:1"
                  }
                ],
                "id": 581,
                "name": "Block",
                "src": "5407:246:1"
              }
            ],
            "id": 582,
            "name": "FunctionDefinition",
            "src": "5356:297:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "balance1",
              "scope": 2754,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Get the pool's balance of token1\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check"
                },
                "id": 583,
                "name": "StructuredDocumentation",
                "src": "5659:172:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 584,
                "name": "ParameterList",
                "src": "5853:2:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 624,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 585,
                        "name": "ElementaryTypeName",
                        "src": "5878:7:1"
                      }
                    ],
                    "id": 586,
                    "name": "VariableDeclaration",
                    "src": "5878:7:1"
                  }
                ],
                "id": 587,
                "name": "ParameterList",
                "src": "5877:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        589,
                        591
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "success",
                          "scope": 623,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 588,
                            "name": "ElementaryTypeName",
                            "src": "5898:4:1"
                          }
                        ],
                        "id": 589,
                        "name": "VariableDeclaration",
                        "src": "5898:12:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "data",
                          "scope": 623,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 590,
                            "name": "ElementaryTypeName",
                            "src": "5912:5:1"
                          }
                        ],
                        "id": 591,
                        "name": "VariableDeclaration",
                        "src": "5912:17:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(bool,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "staticcall",
                              "type": "function (bytes memory) view returns (bool,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 348,
                                  "type": "address",
                                  "value": "token1"
                                },
                                "id": 592,
                                "name": "Identifier",
                                "src": "5945:6:1"
                              }
                            ],
                            "id": 593,
                            "name": "MemberAccess",
                            "src": "5945:17:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodeWithSelector",
                                  "type": "function (bytes4) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967295,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 594,
                                    "name": "Identifier",
                                    "src": "5963:3:1"
                                  }
                                ],
                                "id": 595,
                                "name": "MemberAccess",
                                "src": "5963:22:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "selector",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 2875,
                                      "type": "function IERC20Minimal.balanceOf(address) view returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2936,
                                          "type": "type(contract IERC20Minimal)",
                                          "value": "IERC20Minimal"
                                        },
                                        "id": 596,
                                        "name": "Identifier",
                                        "src": "5986:13:1"
                                      }
                                    ],
                                    "id": 597,
                                    "name": "MemberAccess",
                                    "src": "5986:23:1"
                                  }
                                ],
                                "id": 598,
                                "name": "MemberAccess",
                                "src": "5986:32:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MoonwalkerPool_$2754",
                                          "typeString": "contract MoonwalkerPool"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 599,
                                        "name": "ElementaryTypeName",
                                        "src": "6020:7:1"
                                      }
                                    ],
                                    "id": 600,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6020:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967268,
                                      "type": "contract MoonwalkerPool",
                                      "value": "this"
                                    },
                                    "id": 601,
                                    "name": "Identifier",
                                    "src": "6028:4:1"
                                  }
                                ],
                                "id": 602,
                                "name": "FunctionCall",
                                "src": "6020:13:1"
                              }
                            ],
                            "id": 603,
                            "name": "FunctionCall",
                            "src": "5963:71:1"
                          }
                        ],
                        "id": 604,
                        "name": "FunctionCall",
                        "src": "5945:90:1"
                      }
                    ],
                    "id": 605,
                    "name": "VariableDeclarationStatement",
                    "src": "5897:138:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 606,
                            "name": "Identifier",
                            "src": "6045:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 589,
                                  "type": "bool",
                                  "value": "success"
                                },
                                "id": 607,
                                "name": "Identifier",
                                "src": "6053:7:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 591,
                                          "type": "bytes memory",
                                          "value": "data"
                                        },
                                        "id": 608,
                                        "name": "Identifier",
                                        "src": "6064:4:1"
                                      }
                                    ],
                                    "id": 609,
                                    "name": "MemberAccess",
                                    "src": "6064:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 610,
                                    "name": "Literal",
                                    "src": "6079:2:1"
                                  }
                                ],
                                "id": 611,
                                "name": "BinaryOperation",
                                "src": "6064:17:1"
                              }
                            ],
                            "id": 612,
                            "name": "BinaryOperation",
                            "src": "6053:28:1"
                          }
                        ],
                        "id": 613,
                        "name": "FunctionCall",
                        "src": "6045:37:1"
                      }
                    ],
                    "id": 614,
                    "name": "ExpressionStatement",
                    "src": "6045:37:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 587
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "decode",
                              "type": "function () pure"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967295,
                                  "type": "abi",
                                  "value": "abi"
                                },
                                "id": 615,
                                "name": "Identifier",
                                "src": "6099:3:1"
                              }
                            ],
                            "id": 616,
                            "name": "MemberAccess",
                            "src": "6099:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 591,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 617,
                            "name": "Identifier",
                            "src": "6110:4:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 618,
                                    "name": "ElementaryTypeName",
                                    "src": "6117:7:1"
                                  }
                                ],
                                "id": 619,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6117:7:1"
                              }
                            ],
                            "id": 620,
                            "name": "TupleExpression",
                            "src": "6116:9:1"
                          }
                        ],
                        "id": 621,
                        "name": "FunctionCall",
                        "src": "6099:27:1"
                      }
                    ],
                    "id": 622,
                    "name": "Return",
                    "src": "6092:34:1"
                  }
                ],
                "id": 623,
                "name": "Block",
                "src": "5887:246:1"
              }
            ],
            "id": 624,
            "name": "FunctionDefinition",
            "src": "5836:297:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3227
              ],
              "functionSelector": "a38807f2",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "snapshotCumulativesInside",
              "scope": 2754,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolDerivedState"
                },
                "id": 625,
                "name": "StructuredDocumentation",
                "src": "6139:43:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 631,
                "name": "OverrideSpecifier",
                "src": "6294:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 806,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 626,
                        "name": "ElementaryTypeName",
                        "src": "6222:5:1"
                      }
                    ],
                    "id": 627,
                    "name": "VariableDeclaration",
                    "src": "6222:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 806,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 628,
                        "name": "ElementaryTypeName",
                        "src": "6239:5:1"
                      }
                    ],
                    "id": 629,
                    "name": "VariableDeclaration",
                    "src": "6239:15:1"
                  }
                ],
                "id": 630,
                "name": "ParameterList",
                "src": "6221:34:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCumulativeInside",
                      "scope": 806,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int56",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int56",
                          "type": "int56"
                        },
                        "id": 634,
                        "name": "ElementaryTypeName",
                        "src": "6356:5:1"
                      }
                    ],
                    "id": 635,
                    "name": "VariableDeclaration",
                    "src": "6356:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityInsideX128",
                      "scope": 806,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 636,
                        "name": "ElementaryTypeName",
                        "src": "6396:7:1"
                      }
                    ],
                    "id": 637,
                    "name": "VariableDeclaration",
                    "src": "6396:37:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsInside",
                      "scope": 806,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 638,
                        "name": "ElementaryTypeName",
                        "src": "6447:6:1"
                      }
                    ],
                    "id": 639,
                    "name": "VariableDeclaration",
                    "src": "6447:20:1"
                  }
                ],
                "id": 640,
                "name": "ParameterList",
                "src": "6342:135:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 632,
                    "name": "Identifier",
                    "src": "6311:14:1"
                  }
                ],
                "id": 633,
                "name": "ModifierInvocation",
                "src": "6311:14:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 527,
                              "type": "function (int24,int24) pure",
                              "value": "checkTicks"
                            },
                            "id": 641,
                            "name": "Identifier",
                            "src": "6492:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 627,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 642,
                            "name": "Identifier",
                            "src": "6503:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 629,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 643,
                            "name": "Identifier",
                            "src": "6514:9:1"
                          }
                        ],
                        "id": 644,
                        "name": "FunctionCall",
                        "src": "6492:32:1"
                      }
                    ],
                    "id": 645,
                    "name": "ExpressionStatement",
                    "src": "6492:32:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        647
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tickCumulativeLower",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int56",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int56",
                              "type": "int56"
                            },
                            "id": 646,
                            "name": "ElementaryTypeName",
                            "src": "6535:5:1"
                          }
                        ],
                        "id": 647,
                        "name": "VariableDeclaration",
                        "src": "6535:25:1"
                      }
                    ],
                    "id": 648,
                    "name": "VariableDeclarationStatement",
                    "src": "6535:25:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        650
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tickCumulativeUpper",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int56",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int56",
                              "type": "int56"
                            },
                            "id": 649,
                            "name": "ElementaryTypeName",
                            "src": "6570:5:1"
                          }
                        ],
                        "id": 650,
                        "name": "VariableDeclaration",
                        "src": "6570:25:1"
                      }
                    ],
                    "id": 651,
                    "name": "VariableDeclarationStatement",
                    "src": "6570:25:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        653
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "secondsPerLiquidityOutsideLowerX128",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint160",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint160",
                              "type": "uint160"
                            },
                            "id": 652,
                            "name": "ElementaryTypeName",
                            "src": "6605:7:1"
                          }
                        ],
                        "id": 653,
                        "name": "VariableDeclaration",
                        "src": "6605:43:1"
                      }
                    ],
                    "id": 654,
                    "name": "VariableDeclarationStatement",
                    "src": "6605:43:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        656
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "secondsPerLiquidityOutsideUpperX128",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint160",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint160",
                              "type": "uint160"
                            },
                            "id": 655,
                            "name": "ElementaryTypeName",
                            "src": "6658:7:1"
                          }
                        ],
                        "id": 656,
                        "name": "VariableDeclaration",
                        "src": "6658:43:1"
                      }
                    ],
                    "id": 657,
                    "name": "VariableDeclarationStatement",
                    "src": "6658:43:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        659
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "secondsOutsideLower",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint32",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint32",
                              "type": "uint32"
                            },
                            "id": 658,
                            "name": "ElementaryTypeName",
                            "src": "6711:6:1"
                          }
                        ],
                        "id": 659,
                        "name": "VariableDeclaration",
                        "src": "6711:26:1"
                      }
                    ],
                    "id": 660,
                    "name": "VariableDeclarationStatement",
                    "src": "6711:26:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        662
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "secondsOutsideUpper",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint32",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint32",
                              "type": "uint32"
                            },
                            "id": 661,
                            "name": "ElementaryTypeName",
                            "src": "6747:6:1"
                          }
                        ],
                        "id": 662,
                        "name": "VariableDeclaration",
                        "src": "6747:26:1"
                      }
                    ],
                    "id": 663,
                    "name": "VariableDeclarationStatement",
                    "src": "6747:26:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            667
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "lower",
                              "scope": 726,
                              "stateVariable": false,
                              "storageLocation": "storage",
                              "type": "struct Tick.Info",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "Tick.Info",
                                  "referencedDeclaration": 5957,
                                  "type": "struct Tick.Info"
                                },
                                "id": 666,
                                "name": "UserDefinedTypeName",
                                "src": "6798:9:1"
                              }
                            ],
                            "id": 667,
                            "name": "VariableDeclaration",
                            "src": "6798:23:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Tick.Info storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 406,
                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                  "value": "ticks"
                                },
                                "id": 668,
                                "name": "Identifier",
                                "src": "6824:5:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 627,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 669,
                                "name": "Identifier",
                                "src": "6830:9:1"
                              }
                            ],
                            "id": 670,
                            "name": "IndexAccess",
                            "src": "6824:16:1"
                          }
                        ],
                        "id": 671,
                        "name": "VariableDeclarationStatement",
                        "src": "6798:42:1"
                      },
                      {
                        "attributes": {
                          "assignments": [
                            675
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "upper",
                              "scope": 726,
                              "stateVariable": false,
                              "storageLocation": "storage",
                              "type": "struct Tick.Info",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "Tick.Info",
                                  "referencedDeclaration": 5957,
                                  "type": "struct Tick.Info"
                                },
                                "id": 674,
                                "name": "UserDefinedTypeName",
                                "src": "6854:9:1"
                              }
                            ],
                            "id": 675,
                            "name": "VariableDeclaration",
                            "src": "6854:23:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Tick.Info storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 406,
                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                  "value": "ticks"
                                },
                                "id": 676,
                                "name": "Identifier",
                                "src": "6880:5:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 629,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 677,
                                "name": "Identifier",
                                "src": "6886:9:1"
                              }
                            ],
                            "id": 678,
                            "name": "IndexAccess",
                            "src": "6880:16:1"
                          }
                        ],
                        "id": 679,
                        "name": "VariableDeclarationStatement",
                        "src": "6854:42:1"
                      },
                      {
                        "attributes": {
                          "assignments": [
                            681
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "initializedLower",
                              "scope": 726,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "bool",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bool",
                                  "type": "bool"
                                },
                                "id": 680,
                                "name": "ElementaryTypeName",
                                "src": "6910:4:1"
                              }
                            ],
                            "id": 681,
                            "name": "VariableDeclaration",
                            "src": "6910:21:1"
                          }
                        ],
                        "id": 682,
                        "name": "VariableDeclarationStatement",
                        "src": "6910:21:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "tuple()"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "type": "tuple(int56,uint160,uint32,bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 647,
                                      "type": "int56",
                                      "value": "tickCumulativeLower"
                                    },
                                    "id": 683,
                                    "name": "Identifier",
                                    "src": "6946:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 653,
                                      "type": "uint160",
                                      "value": "secondsPerLiquidityOutsideLowerX128"
                                    },
                                    "id": 684,
                                    "name": "Identifier",
                                    "src": "6967:35:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 659,
                                      "type": "uint32",
                                      "value": "secondsOutsideLower"
                                    },
                                    "id": 685,
                                    "name": "Identifier",
                                    "src": "7004:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 681,
                                      "type": "bool",
                                      "value": "initializedLower"
                                    },
                                    "id": 686,
                                    "name": "Identifier",
                                    "src": "7025:16:1"
                                  }
                                ],
                                "id": 687,
                                "name": "TupleExpression",
                                "src": "6945:97:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int56,uint160,uint32,bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tickCumulativeOutside",
                                      "referencedDeclaration": 5950,
                                      "type": "int56"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 667,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 688,
                                        "name": "Identifier",
                                        "src": "7063:5:1"
                                      }
                                    ],
                                    "id": 689,
                                    "name": "MemberAccess",
                                    "src": "7063:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "secondsPerLiquidityOutsideX128",
                                      "referencedDeclaration": 5952,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 667,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 690,
                                        "name": "Identifier",
                                        "src": "7108:5:1"
                                      }
                                    ],
                                    "id": 691,
                                    "name": "MemberAccess",
                                    "src": "7108:36:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "secondsOutside",
                                      "referencedDeclaration": 5954,
                                      "type": "uint32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 667,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 692,
                                        "name": "Identifier",
                                        "src": "7162:5:1"
                                      }
                                    ],
                                    "id": 693,
                                    "name": "MemberAccess",
                                    "src": "7162:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "initialized",
                                      "referencedDeclaration": 5956,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 667,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 694,
                                        "name": "Identifier",
                                        "src": "7200:5:1"
                                      }
                                    ],
                                    "id": 695,
                                    "name": "MemberAccess",
                                    "src": "7200:17:1"
                                  }
                                ],
                                "id": 696,
                                "name": "TupleExpression",
                                "src": "7045:186:1"
                              }
                            ],
                            "id": 697,
                            "name": "Assignment",
                            "src": "6945:286:1"
                          }
                        ],
                        "id": 698,
                        "name": "ExpressionStatement",
                        "src": "6945:286:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    4294967278,
                                    4294967278
                                  ],
                                  "referencedDeclaration": 4294967278,
                                  "type": "function (bool) pure",
                                  "value": "require"
                                },
                                "id": 699,
                                "name": "Identifier",
                                "src": "7245:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 681,
                                  "type": "bool",
                                  "value": "initializedLower"
                                },
                                "id": 700,
                                "name": "Identifier",
                                "src": "7253:16:1"
                              }
                            ],
                            "id": 701,
                            "name": "FunctionCall",
                            "src": "7245:25:1"
                          }
                        ],
                        "id": 702,
                        "name": "ExpressionStatement",
                        "src": "7245:25:1"
                      },
                      {
                        "attributes": {
                          "assignments": [
                            704
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "initializedUpper",
                              "scope": 726,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "bool",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bool",
                                  "type": "bool"
                                },
                                "id": 703,
                                "name": "ElementaryTypeName",
                                "src": "7285:4:1"
                              }
                            ],
                            "id": 704,
                            "name": "VariableDeclaration",
                            "src": "7285:21:1"
                          }
                        ],
                        "id": 705,
                        "name": "VariableDeclarationStatement",
                        "src": "7285:21:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "tuple()"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "type": "tuple(int56,uint160,uint32,bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 650,
                                      "type": "int56",
                                      "value": "tickCumulativeUpper"
                                    },
                                    "id": 706,
                                    "name": "Identifier",
                                    "src": "7321:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 656,
                                      "type": "uint160",
                                      "value": "secondsPerLiquidityOutsideUpperX128"
                                    },
                                    "id": 707,
                                    "name": "Identifier",
                                    "src": "7342:35:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 662,
                                      "type": "uint32",
                                      "value": "secondsOutsideUpper"
                                    },
                                    "id": 708,
                                    "name": "Identifier",
                                    "src": "7379:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 704,
                                      "type": "bool",
                                      "value": "initializedUpper"
                                    },
                                    "id": 709,
                                    "name": "Identifier",
                                    "src": "7400:16:1"
                                  }
                                ],
                                "id": 710,
                                "name": "TupleExpression",
                                "src": "7320:97:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int56,uint160,uint32,bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tickCumulativeOutside",
                                      "referencedDeclaration": 5950,
                                      "type": "int56"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 675,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 711,
                                        "name": "Identifier",
                                        "src": "7438:5:1"
                                      }
                                    ],
                                    "id": 712,
                                    "name": "MemberAccess",
                                    "src": "7438:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "secondsPerLiquidityOutsideX128",
                                      "referencedDeclaration": 5952,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 675,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 713,
                                        "name": "Identifier",
                                        "src": "7483:5:1"
                                      }
                                    ],
                                    "id": 714,
                                    "name": "MemberAccess",
                                    "src": "7483:36:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "secondsOutside",
                                      "referencedDeclaration": 5954,
                                      "type": "uint32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 675,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 715,
                                        "name": "Identifier",
                                        "src": "7537:5:1"
                                      }
                                    ],
                                    "id": 716,
                                    "name": "MemberAccess",
                                    "src": "7537:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "initialized",
                                      "referencedDeclaration": 5956,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 675,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 717,
                                        "name": "Identifier",
                                        "src": "7575:5:1"
                                      }
                                    ],
                                    "id": 718,
                                    "name": "MemberAccess",
                                    "src": "7575:17:1"
                                  }
                                ],
                                "id": 719,
                                "name": "TupleExpression",
                                "src": "7420:186:1"
                              }
                            ],
                            "id": 720,
                            "name": "Assignment",
                            "src": "7320:286:1"
                          }
                        ],
                        "id": 721,
                        "name": "ExpressionStatement",
                        "src": "7320:286:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    4294967278,
                                    4294967278
                                  ],
                                  "referencedDeclaration": 4294967278,
                                  "type": "function (bool) pure",
                                  "value": "require"
                                },
                                "id": 722,
                                "name": "Identifier",
                                "src": "7620:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 704,
                                  "type": "bool",
                                  "value": "initializedUpper"
                                },
                                "id": 723,
                                "name": "Identifier",
                                "src": "7628:16:1"
                              }
                            ],
                            "id": 724,
                            "name": "FunctionCall",
                            "src": "7620:25:1"
                          }
                        ],
                        "id": 725,
                        "name": "ExpressionStatement",
                        "src": "7620:25:1"
                      }
                    ],
                    "id": 726,
                    "name": "Block",
                    "src": "6784:872:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        728
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_slot0",
                          "scope": 805,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct MoonwalkerPool.Slot0",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Slot0",
                              "referencedDeclaration": 375,
                              "type": "struct MoonwalkerPool.Slot0"
                            },
                            "id": 727,
                            "name": "UserDefinedTypeName",
                            "src": "7666:5:1"
                          }
                        ],
                        "id": 728,
                        "name": "VariableDeclaration",
                        "src": "7666:19:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 379,
                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                          "value": "slot0"
                        },
                        "id": 729,
                        "name": "Identifier",
                        "src": "7688:5:1"
                      }
                    ],
                    "id": 730,
                    "name": "VariableDeclarationStatement",
                    "src": "7666:27:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 364,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 728,
                                  "type": "struct MoonwalkerPool.Slot0 memory",
                                  "value": "_slot0"
                                },
                                "id": 731,
                                "name": "Identifier",
                                "src": "7708:6:1"
                              }
                            ],
                            "id": 732,
                            "name": "MemberAccess",
                            "src": "7708:11:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 627,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 733,
                            "name": "Identifier",
                            "src": "7722:9:1"
                          }
                        ],
                        "id": 734,
                        "name": "BinaryOperation",
                        "src": "7708:23:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 640
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int56,uint160,uint32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_int56",
                                        "typeString": "int56"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "int56"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 647,
                                          "type": "int56",
                                          "value": "tickCumulativeLower"
                                        },
                                        "id": 735,
                                        "name": "Identifier",
                                        "src": "7772:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 650,
                                          "type": "int56",
                                          "value": "tickCumulativeUpper"
                                        },
                                        "id": 736,
                                        "name": "Identifier",
                                        "src": "7794:19:1"
                                      }
                                    ],
                                    "id": 737,
                                    "name": "BinaryOperation",
                                    "src": "7772:41:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 653,
                                          "type": "uint160",
                                          "value": "secondsPerLiquidityOutsideLowerX128"
                                        },
                                        "id": 738,
                                        "name": "Identifier",
                                        "src": "7831:35:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 656,
                                          "type": "uint160",
                                          "value": "secondsPerLiquidityOutsideUpperX128"
                                        },
                                        "id": 739,
                                        "name": "Identifier",
                                        "src": "7869:35:1"
                                      }
                                    ],
                                    "id": 740,
                                    "name": "BinaryOperation",
                                    "src": "7831:73:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 659,
                                          "type": "uint32",
                                          "value": "secondsOutsideLower"
                                        },
                                        "id": 741,
                                        "name": "Identifier",
                                        "src": "7922:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 662,
                                          "type": "uint32",
                                          "value": "secondsOutsideUpper"
                                        },
                                        "id": 742,
                                        "name": "Identifier",
                                        "src": "7944:19:1"
                                      }
                                    ],
                                    "id": 743,
                                    "name": "BinaryOperation",
                                    "src": "7922:41:1"
                                  }
                                ],
                                "id": 744,
                                "name": "TupleExpression",
                                "src": "7754:223:1"
                              }
                            ],
                            "id": 745,
                            "name": "Return",
                            "src": "7747:230:1"
                          }
                        ],
                        "id": 746,
                        "name": "Block",
                        "src": "7733:255:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tick",
                                  "referencedDeclaration": 364,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 728,
                                      "type": "struct MoonwalkerPool.Slot0 memory",
                                      "value": "_slot0"
                                    },
                                    "id": 747,
                                    "name": "Identifier",
                                    "src": "7998:6:1"
                                  }
                                ],
                                "id": 748,
                                "name": "MemberAccess",
                                "src": "7998:11:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 629,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 749,
                                "name": "Identifier",
                                "src": "8012:9:1"
                              }
                            ],
                            "id": 750,
                            "name": "BinaryOperation",
                            "src": "7998:23:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "assignments": [
                                    752
                                  ]
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "constant": false,
                                      "mutability": "mutable",
                                      "name": "time",
                                      "scope": 790,
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "type": "uint32",
                                      "visibility": "internal"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint32",
                                          "type": "uint32"
                                        },
                                        "id": 751,
                                        "name": "ElementaryTypeName",
                                        "src": "8037:6:1"
                                      }
                                    ],
                                    "id": 752,
                                    "name": "VariableDeclaration",
                                    "src": "8037:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 540,
                                          "type": "function () view returns (uint32)",
                                          "value": "_blockTimestamp"
                                        },
                                        "id": 753,
                                        "name": "Identifier",
                                        "src": "8051:15:1"
                                      }
                                    ],
                                    "id": 754,
                                    "name": "FunctionCall",
                                    "src": "8051:17:1"
                                  }
                                ],
                                "id": 755,
                                "name": "VariableDeclarationStatement",
                                "src": "8037:31:1"
                              },
                              {
                                "attributes": {
                                  "assignments": [
                                    757,
                                    759
                                  ]
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "constant": false,
                                      "mutability": "mutable",
                                      "name": "tickCumulative",
                                      "scope": 790,
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "type": "int56",
                                      "visibility": "internal"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "int56",
                                          "type": "int56"
                                        },
                                        "id": 756,
                                        "name": "ElementaryTypeName",
                                        "src": "8083:5:1"
                                      }
                                    ],
                                    "id": 757,
                                    "name": "VariableDeclaration",
                                    "src": "8083:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "constant": false,
                                      "mutability": "mutable",
                                      "name": "secondsPerLiquidityCumulativeX128",
                                      "scope": 790,
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "type": "uint160",
                                      "visibility": "internal"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint160",
                                          "type": "uint160"
                                        },
                                        "id": 758,
                                        "name": "ElementaryTypeName",
                                        "src": "8105:7:1"
                                      }
                                    ],
                                    "id": 759,
                                    "name": "VariableDeclaration",
                                    "src": "8105:41:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple(int56,uint160)",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_uint16",
                                              "typeString": "uint16"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            },
                                            {
                                              "typeIdentifier": "t_uint16",
                                              "typeString": "uint16"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "observeSingle",
                                          "referencedDeclaration": 4820,
                                          "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 424,
                                              "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                              "value": "observations"
                                            },
                                            "id": 760,
                                            "name": "Identifier",
                                            "src": "8166:12:1"
                                          }
                                        ],
                                        "id": 761,
                                        "name": "MemberAccess",
                                        "src": "8166:26:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 752,
                                          "type": "uint32",
                                          "value": "time"
                                        },
                                        "id": 762,
                                        "name": "Identifier",
                                        "src": "8214:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 763,
                                        "name": "Literal",
                                        "src": "8240:1:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tick",
                                          "referencedDeclaration": 364,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 728,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "_slot0"
                                            },
                                            "id": 764,
                                            "name": "Identifier",
                                            "src": "8263:6:1"
                                          }
                                        ],
                                        "id": 765,
                                        "name": "MemberAccess",
                                        "src": "8263:11:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "observationIndex",
                                          "referencedDeclaration": 366,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 728,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "_slot0"
                                            },
                                            "id": 766,
                                            "name": "Identifier",
                                            "src": "8296:6:1"
                                          }
                                        ],
                                        "id": 767,
                                        "name": "MemberAccess",
                                        "src": "8296:23:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 400,
                                          "type": "uint128",
                                          "value": "liquidity"
                                        },
                                        "id": 768,
                                        "name": "Identifier",
                                        "src": "8341:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "observationCardinality",
                                          "referencedDeclaration": 368,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 728,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "_slot0"
                                            },
                                            "id": 769,
                                            "name": "Identifier",
                                            "src": "8372:6:1"
                                          }
                                        ],
                                        "id": 770,
                                        "name": "MemberAccess",
                                        "src": "8372:29:1"
                                      }
                                    ],
                                    "id": 771,
                                    "name": "FunctionCall",
                                    "src": "8166:253:1"
                                  }
                                ],
                                "id": 772,
                                "name": "VariableDeclarationStatement",
                                "src": "8082:337:1"
                              },
                              {
                                "attributes": {
                                  "functionReturnParameters": 640
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "tuple(int56,uint160,uint32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_int56",
                                            "typeString": "int56"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "int56"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_int56",
                                                "typeString": "int56"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "int56"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 757,
                                                  "type": "int56",
                                                  "value": "tickCumulative"
                                                },
                                                "id": 773,
                                                "name": "Identifier",
                                                "src": "8458:14:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 647,
                                                  "type": "int56",
                                                  "value": "tickCumulativeLower"
                                                },
                                                "id": 774,
                                                "name": "Identifier",
                                                "src": "8475:19:1"
                                              }
                                            ],
                                            "id": 775,
                                            "name": "BinaryOperation",
                                            "src": "8458:36:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 650,
                                              "type": "int56",
                                              "value": "tickCumulativeUpper"
                                            },
                                            "id": 776,
                                            "name": "Identifier",
                                            "src": "8497:19:1"
                                          }
                                        ],
                                        "id": 777,
                                        "name": "BinaryOperation",
                                        "src": "8458:58:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint160",
                                                "typeString": "uint160"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint160"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 759,
                                                  "type": "uint160",
                                                  "value": "secondsPerLiquidityCumulativeX128"
                                                },
                                                "id": 778,
                                                "name": "Identifier",
                                                "src": "8534:33:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 653,
                                                  "type": "uint160",
                                                  "value": "secondsPerLiquidityOutsideLowerX128"
                                                },
                                                "id": 779,
                                                "name": "Identifier",
                                                "src": "8590:35:1"
                                              }
                                            ],
                                            "id": 780,
                                            "name": "BinaryOperation",
                                            "src": "8534:91:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 656,
                                              "type": "uint160",
                                              "value": "secondsPerLiquidityOutsideUpperX128"
                                            },
                                            "id": 781,
                                            "name": "Identifier",
                                            "src": "8648:35:1"
                                          }
                                        ],
                                        "id": 782,
                                        "name": "BinaryOperation",
                                        "src": "8534:149:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint32"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 752,
                                                  "type": "uint32",
                                                  "value": "time"
                                                },
                                                "id": 783,
                                                "name": "Identifier",
                                                "src": "8701:4:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 659,
                                                  "type": "uint32",
                                                  "value": "secondsOutsideLower"
                                                },
                                                "id": 784,
                                                "name": "Identifier",
                                                "src": "8708:19:1"
                                              }
                                            ],
                                            "id": 785,
                                            "name": "BinaryOperation",
                                            "src": "8701:26:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 662,
                                              "type": "uint32",
                                              "value": "secondsOutsideUpper"
                                            },
                                            "id": 786,
                                            "name": "Identifier",
                                            "src": "8730:19:1"
                                          }
                                        ],
                                        "id": 787,
                                        "name": "BinaryOperation",
                                        "src": "8701:48:1"
                                      }
                                    ],
                                    "id": 788,
                                    "name": "TupleExpression",
                                    "src": "8440:323:1"
                                  }
                                ],
                                "id": 789,
                                "name": "Return",
                                "src": "8433:330:1"
                              }
                            ],
                            "id": 790,
                            "name": "Block",
                            "src": "8023:751:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "functionReturnParameters": 640
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "tuple(int56,uint160,uint32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_int56",
                                            "typeString": "int56"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "int56"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 650,
                                              "type": "int56",
                                              "value": "tickCumulativeUpper"
                                            },
                                            "id": 791,
                                            "name": "Identifier",
                                            "src": "8819:19:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 647,
                                              "type": "int56",
                                              "value": "tickCumulativeLower"
                                            },
                                            "id": 792,
                                            "name": "Identifier",
                                            "src": "8841:19:1"
                                          }
                                        ],
                                        "id": 793,
                                        "name": "BinaryOperation",
                                        "src": "8819:41:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 656,
                                              "type": "uint160",
                                              "value": "secondsPerLiquidityOutsideUpperX128"
                                            },
                                            "id": 794,
                                            "name": "Identifier",
                                            "src": "8878:35:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 653,
                                              "type": "uint160",
                                              "value": "secondsPerLiquidityOutsideLowerX128"
                                            },
                                            "id": 795,
                                            "name": "Identifier",
                                            "src": "8916:35:1"
                                          }
                                        ],
                                        "id": 796,
                                        "name": "BinaryOperation",
                                        "src": "8878:73:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 662,
                                              "type": "uint32",
                                              "value": "secondsOutsideUpper"
                                            },
                                            "id": 797,
                                            "name": "Identifier",
                                            "src": "8969:19:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 659,
                                              "type": "uint32",
                                              "value": "secondsOutsideLower"
                                            },
                                            "id": 798,
                                            "name": "Identifier",
                                            "src": "8991:19:1"
                                          }
                                        ],
                                        "id": 799,
                                        "name": "BinaryOperation",
                                        "src": "8969:41:1"
                                      }
                                    ],
                                    "id": 800,
                                    "name": "TupleExpression",
                                    "src": "8801:223:1"
                                  }
                                ],
                                "id": 801,
                                "name": "Return",
                                "src": "8794:230:1"
                              }
                            ],
                            "id": 802,
                            "name": "Block",
                            "src": "8780:255:1"
                          }
                        ],
                        "id": 803,
                        "name": "IfStatement",
                        "src": "7994:1041:1"
                      }
                    ],
                    "id": 804,
                    "name": "IfStatement",
                    "src": "7704:1331:1"
                  }
                ],
                "id": 805,
                "name": "Block",
                "src": "6482:2559:1"
              }
            ],
            "id": 806,
            "name": "FunctionDefinition",
            "src": "6187:2854:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3213
              ],
              "functionSelector": "883bdbfd",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "observe",
              "scope": 2754,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolDerivedState"
                },
                "id": 807,
                "name": "StructuredDocumentation",
                "src": "9047:43:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 812,
                "name": "OverrideSpecifier",
                "src": "9181:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsAgos",
                      "scope": 837,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint32[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint32[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint32",
                              "type": "uint32"
                            },
                            "id": 808,
                            "name": "ElementaryTypeName",
                            "src": "9112:6:1"
                          }
                        ],
                        "id": 809,
                        "name": "ArrayTypeName",
                        "src": "9112:8:1"
                      }
                    ],
                    "id": 810,
                    "name": "VariableDeclaration",
                    "src": "9112:29:1"
                  }
                ],
                "id": 811,
                "name": "ParameterList",
                "src": "9111:31:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCumulatives",
                      "scope": 837,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "int56[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "int56[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int56",
                              "type": "int56"
                            },
                            "id": 815,
                            "name": "ElementaryTypeName",
                            "src": "9230:5:1"
                          }
                        ],
                        "id": 816,
                        "name": "ArrayTypeName",
                        "src": "9230:7:1"
                      }
                    ],
                    "id": 817,
                    "name": "VariableDeclaration",
                    "src": "9230:30:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityCumulativeX128s",
                      "scope": 837,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint160[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint160[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint160",
                              "type": "uint160"
                            },
                            "id": 818,
                            "name": "ElementaryTypeName",
                            "src": "9262:7:1"
                          }
                        ],
                        "id": 819,
                        "name": "ArrayTypeName",
                        "src": "9262:9:1"
                      }
                    ],
                    "id": 820,
                    "name": "VariableDeclaration",
                    "src": "9262:51:1"
                  }
                ],
                "id": 821,
                "name": "ParameterList",
                "src": "9229:85:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 813,
                    "name": "Identifier",
                    "src": "9198:14:1"
                  }
                ],
                "id": 814,
                "name": "ModifierInvocation",
                "src": "9198:14:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 821
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(int56[] memory,uint160[] memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr",
                                  "typeString": "uint32[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "observe",
                              "referencedDeclaration": 4906,
                              "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint16) view returns (int56[] memory,uint160[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 424,
                                  "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                  "value": "observations"
                                },
                                "id": 822,
                                "name": "Identifier",
                                "src": "9348:12:1"
                              }
                            ],
                            "id": 823,
                            "name": "MemberAccess",
                            "src": "9348:20:1"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 540,
                                  "type": "function () view returns (uint32)",
                                  "value": "_blockTimestamp"
                                },
                                "id": 824,
                                "name": "Identifier",
                                "src": "9386:15:1"
                              }
                            ],
                            "id": 825,
                            "name": "FunctionCall",
                            "src": "9386:17:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 810,
                              "type": "uint32[] calldata",
                              "value": "secondsAgos"
                            },
                            "id": 826,
                            "name": "Identifier",
                            "src": "9421:11:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 364,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 827,
                                "name": "Identifier",
                                "src": "9450:5:1"
                              }
                            ],
                            "id": 828,
                            "name": "MemberAccess",
                            "src": "9450:10:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "observationIndex",
                              "referencedDeclaration": 366,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 829,
                                "name": "Identifier",
                                "src": "9478:5:1"
                              }
                            ],
                            "id": 830,
                            "name": "MemberAccess",
                            "src": "9478:22:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 400,
                              "type": "uint128",
                              "value": "liquidity"
                            },
                            "id": 831,
                            "name": "Identifier",
                            "src": "9518:9:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "observationCardinality",
                              "referencedDeclaration": 368,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 832,
                                "name": "Identifier",
                                "src": "9545:5:1"
                              }
                            ],
                            "id": 833,
                            "name": "MemberAccess",
                            "src": "9545:28:1"
                          }
                        ],
                        "id": 834,
                        "name": "FunctionCall",
                        "src": "9348:239:1"
                      }
                    ],
                    "id": 835,
                    "name": "Return",
                    "src": "9329:258:1"
                  }
                ],
                "id": 836,
                "name": "Block",
                "src": "9319:275:1"
              }
            ],
            "id": 837,
            "name": "FunctionDefinition",
            "src": "9095:499:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3196
              ],
              "functionSelector": "32148f67",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "increaseObservationCardinalityNext",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions"
                },
                "id": 838,
                "name": "StructuredDocumentation",
                "src": "9600:38:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 842,
                "name": "OverrideSpecifier",
                "src": "9747:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "observationCardinalityNext",
                      "scope": 877,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 839,
                        "name": "ElementaryTypeName",
                        "src": "9687:6:1"
                      }
                    ],
                    "id": 840,
                    "name": "VariableDeclaration",
                    "src": "9687:33:1"
                  }
                ],
                "id": 841,
                "name": "ParameterList",
                "src": "9686:35:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 847,
                "name": "ParameterList",
                "src": "9796:0:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 843,
                    "name": "Identifier",
                    "src": "9764:4:1"
                  }
                ],
                "id": 844,
                "name": "ModifierInvocation",
                "src": "9764:4:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 845,
                    "name": "Identifier",
                    "src": "9777:14:1"
                  }
                ],
                "id": 846,
                "name": "ModifierInvocation",
                "src": "9777:14:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        849
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "observationCardinalityNextOld",
                          "scope": 876,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint16",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 848,
                            "name": "ElementaryTypeName",
                            "src": "9806:6:1"
                          }
                        ],
                        "id": 849,
                        "name": "VariableDeclaration",
                        "src": "9806:36:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "observationCardinalityNext",
                          "referencedDeclaration": 370,
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 379,
                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                              "value": "slot0"
                            },
                            "id": 850,
                            "name": "Identifier",
                            "src": "9845:5:1"
                          }
                        ],
                        "id": 851,
                        "name": "MemberAccess",
                        "src": "9845:32:1"
                      }
                    ],
                    "id": 852,
                    "name": "VariableDeclarationStatement",
                    "src": "9806:71:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        854
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "observationCardinalityNextNew",
                          "scope": 876,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint16",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 853,
                            "name": "ElementaryTypeName",
                            "src": "9904:6:1"
                          }
                        ],
                        "id": 854,
                        "name": "VariableDeclaration",
                        "src": "9904:36:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint16",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grow",
                              "referencedDeclaration": 4398,
                              "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint16) returns (uint16)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 424,
                                  "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                  "value": "observations"
                                },
                                "id": 855,
                                "name": "Identifier",
                                "src": "9955:12:1"
                              }
                            ],
                            "id": 856,
                            "name": "MemberAccess",
                            "src": "9955:17:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 849,
                              "type": "uint16",
                              "value": "observationCardinalityNextOld"
                            },
                            "id": 857,
                            "name": "Identifier",
                            "src": "9973:29:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 840,
                              "type": "uint16",
                              "value": "observationCardinalityNext"
                            },
                            "id": 858,
                            "name": "Identifier",
                            "src": "10004:26:1"
                          }
                        ],
                        "id": 859,
                        "name": "FunctionCall",
                        "src": "9955:76:1"
                      }
                    ],
                    "id": 860,
                    "name": "VariableDeclarationStatement",
                    "src": "9904:127:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "observationCardinalityNext",
                              "referencedDeclaration": 370,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 861,
                                "name": "Identifier",
                                "src": "10041:5:1"
                              }
                            ],
                            "id": 863,
                            "name": "MemberAccess",
                            "src": "10041:32:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 854,
                              "type": "uint16",
                              "value": "observationCardinalityNextNew"
                            },
                            "id": 864,
                            "name": "Identifier",
                            "src": "10076:29:1"
                          }
                        ],
                        "id": 865,
                        "name": "Assignment",
                        "src": "10041:64:1"
                      }
                    ],
                    "id": 866,
                    "name": "ExpressionStatement",
                    "src": "10041:64:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 849,
                              "type": "uint16",
                              "value": "observationCardinalityNextOld"
                            },
                            "id": 867,
                            "name": "Identifier",
                            "src": "10119:29:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 854,
                              "type": "uint16",
                              "value": "observationCardinalityNextNew"
                            },
                            "id": 868,
                            "name": "Identifier",
                            "src": "10152:29:1"
                          }
                        ],
                        "id": 869,
                        "name": "BinaryOperation",
                        "src": "10119:62:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3324,
                                  "type": "function (uint16,uint16)",
                                  "value": "IncreaseObservationCardinalityNext"
                                },
                                "id": 870,
                                "name": "Identifier",
                                "src": "10200:34:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 849,
                                  "type": "uint16",
                                  "value": "observationCardinalityNextOld"
                                },
                                "id": 871,
                                "name": "Identifier",
                                "src": "10235:29:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 854,
                                  "type": "uint16",
                                  "value": "observationCardinalityNextNew"
                                },
                                "id": 872,
                                "name": "Identifier",
                                "src": "10266:29:1"
                              }
                            ],
                            "id": 873,
                            "name": "FunctionCall",
                            "src": "10200:96:1"
                          }
                        ],
                        "id": 874,
                        "name": "EmitStatement",
                        "src": "10195:101:1"
                      }
                    ],
                    "id": 875,
                    "name": "IfStatement",
                    "src": "10115:181:1"
                  }
                ],
                "id": 876,
                "name": "Block",
                "src": "9796:507:1"
              }
            ],
            "id": 877,
            "name": "FunctionDefinition",
            "src": "9643:660:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3110
              ],
              "functionSelector": "f637731d",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "initialize",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions\n @dev not locked because it initializes unlocked"
                },
                "id": 878,
                "name": "StructuredDocumentation",
                "src": "10309:94:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 882,
                "name": "OverrideSpecifier",
                "src": "10459:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceX96",
                      "scope": 927,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 879,
                        "name": "ElementaryTypeName",
                        "src": "10428:7:1"
                      }
                    ],
                    "id": 880,
                    "name": "VariableDeclaration",
                    "src": "10428:20:1"
                  }
                ],
                "id": 881,
                "name": "ParameterList",
                "src": "10427:22:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 883,
                "name": "ParameterList",
                "src": "10468:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85",
                                  "typeString": "literal_string \"AI\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 884,
                            "name": "Identifier",
                            "src": "10478:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sqrtPriceX96",
                                  "referencedDeclaration": 362,
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 379,
                                      "type": "struct MoonwalkerPool.Slot0 storage ref",
                                      "value": "slot0"
                                    },
                                    "id": 885,
                                    "name": "Identifier",
                                    "src": "10486:5:1"
                                  }
                                ],
                                "id": 886,
                                "name": "MemberAccess",
                                "src": "10486:18:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 887,
                                "name": "Literal",
                                "src": "10508:1:1"
                              }
                            ],
                            "id": 888,
                            "name": "BinaryOperation",
                            "src": "10486:23:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4149",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"AI\"",
                              "value": "AI"
                            },
                            "id": 889,
                            "name": "Literal",
                            "src": "10511:4:1"
                          }
                        ],
                        "id": 890,
                        "name": "FunctionCall",
                        "src": "10478:38:1"
                      }
                    ],
                    "id": 891,
                    "name": "ExpressionStatement",
                    "src": "10478:38:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        893
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tick",
                          "scope": 926,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 892,
                            "name": "ElementaryTypeName",
                            "src": "10527:5:1"
                          }
                        ],
                        "id": 893,
                        "name": "VariableDeclaration",
                        "src": "10527:10:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int24",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getTickAtSqrtRatio",
                              "referencedDeclaration": 7169,
                              "type": "function (uint160) pure returns (int24)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7170,
                                  "type": "type(library TickMath)",
                                  "value": "TickMath"
                                },
                                "id": 894,
                                "name": "Identifier",
                                "src": "10540:8:1"
                              }
                            ],
                            "id": 895,
                            "name": "MemberAccess",
                            "src": "10540:27:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 880,
                              "type": "uint160",
                              "value": "sqrtPriceX96"
                            },
                            "id": 896,
                            "name": "Identifier",
                            "src": "10568:12:1"
                          }
                        ],
                        "id": 897,
                        "name": "FunctionCall",
                        "src": "10540:41:1"
                      }
                    ],
                    "id": 898,
                    "name": "VariableDeclarationStatement",
                    "src": "10527:54:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        900,
                        902
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "cardinality",
                          "scope": 926,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint16",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 899,
                            "name": "ElementaryTypeName",
                            "src": "10593:6:1"
                          }
                        ],
                        "id": 900,
                        "name": "VariableDeclaration",
                        "src": "10593:18:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "cardinalityNext",
                          "scope": 926,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint16",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 901,
                            "name": "ElementaryTypeName",
                            "src": "10613:6:1"
                          }
                        ],
                        "id": 902,
                        "name": "VariableDeclaration",
                        "src": "10613:22:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint16,uint16)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 4269,
                              "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32) returns (uint16,uint16)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 424,
                                  "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                  "value": "observations"
                                },
                                "id": 903,
                                "name": "Identifier",
                                "src": "10639:12:1"
                              }
                            ],
                            "id": 904,
                            "name": "MemberAccess",
                            "src": "10639:23:1"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 540,
                                  "type": "function () view returns (uint32)",
                                  "value": "_blockTimestamp"
                                },
                                "id": 905,
                                "name": "Identifier",
                                "src": "10663:15:1"
                              }
                            ],
                            "id": 906,
                            "name": "FunctionCall",
                            "src": "10663:17:1"
                          }
                        ],
                        "id": 907,
                        "name": "FunctionCall",
                        "src": "10639:42:1"
                      }
                    ],
                    "id": 908,
                    "name": "VariableDeclarationStatement",
                    "src": "10592:89:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct MoonwalkerPool.Slot0 storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 379,
                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                              "value": "slot0"
                            },
                            "id": 909,
                            "name": "Identifier",
                            "src": "10692:5:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "sqrtPriceX96",
                                "tick",
                                "observationIndex",
                                "observationCardinality",
                                "observationCardinalityNext",
                                "feeProtocol",
                                "unlocked"
                              ],
                              "tryCall": false,
                              "type": "struct MoonwalkerPool.Slot0 memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 375,
                                  "type": "type(struct MoonwalkerPool.Slot0 storage pointer)",
                                  "value": "Slot0"
                                },
                                "id": 910,
                                "name": "Identifier",
                                "src": "10700:5:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 880,
                                  "type": "uint160",
                                  "value": "sqrtPriceX96"
                                },
                                "id": 911,
                                "name": "Identifier",
                                "src": "10734:12:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 893,
                                  "type": "int24",
                                  "value": "tick"
                                },
                                "id": 912,
                                "name": "Identifier",
                                "src": "10766:4:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 913,
                                "name": "Literal",
                                "src": "10802:1:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 900,
                                  "type": "uint16",
                                  "value": "cardinality"
                                },
                                "id": 914,
                                "name": "Identifier",
                                "src": "10841:11:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 902,
                                  "type": "uint16",
                                  "value": "cardinalityNext"
                                },
                                "id": 915,
                                "name": "Identifier",
                                "src": "10894:15:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 916,
                                "name": "Literal",
                                "src": "10936:1:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 917,
                                "name": "Literal",
                                "src": "10961:4:1"
                              }
                            ],
                            "id": 918,
                            "name": "FunctionCall",
                            "src": "10700:276:1"
                          }
                        ],
                        "id": 919,
                        "name": "Assignment",
                        "src": "10692:284:1"
                      }
                    ],
                    "id": 920,
                    "name": "ExpressionStatement",
                    "src": "10692:284:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3238,
                              "type": "function (uint160,int24)",
                              "value": "Initialize"
                            },
                            "id": 921,
                            "name": "Identifier",
                            "src": "10992:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 880,
                              "type": "uint160",
                              "value": "sqrtPriceX96"
                            },
                            "id": 922,
                            "name": "Identifier",
                            "src": "11003:12:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 893,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 923,
                            "name": "Identifier",
                            "src": "11017:4:1"
                          }
                        ],
                        "id": 924,
                        "name": "FunctionCall",
                        "src": "10992:30:1"
                      }
                    ],
                    "id": 925,
                    "name": "EmitStatement",
                    "src": "10987:35:1"
                  }
                ],
                "id": 926,
                "name": "Block",
                "src": "10468:561:1"
              }
            ],
            "id": 927,
            "name": "FunctionDefinition",
            "src": "10408:621:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.ModifyPositionParams",
              "name": "ModifyPositionParams",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "owner",
                  "scope": 936,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 928,
                    "name": "ElementaryTypeName",
                    "src": "11119:7:1"
                  }
                ],
                "id": 929,
                "name": "VariableDeclaration",
                "src": "11119:13:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "scope": 936,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int24",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 930,
                    "name": "ElementaryTypeName",
                    "src": "11194:5:1"
                  }
                ],
                "id": 931,
                "name": "VariableDeclaration",
                "src": "11194:15:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "scope": 936,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int24",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 932,
                    "name": "ElementaryTypeName",
                    "src": "11219:5:1"
                  }
                ],
                "id": 933,
                "name": "VariableDeclaration",
                "src": "11219:15:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "liquidityDelta",
                  "scope": 936,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int128",
                      "type": "int128"
                    },
                    "id": 934,
                    "name": "ElementaryTypeName",
                    "src": "11279:6:1"
                  }
                ],
                "id": 935,
                "name": "VariableDeclaration",
                "src": "11279:21:1"
              }
            ],
            "id": 936,
            "name": "StructDefinition",
            "src": "11035:272:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "_modifyPosition",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Effect some changes to a position\n @param params the position details and the change to the position's liquidity to effect\n @return position a storage pointer referencing the position with the given owner and tick range\n @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient"
                },
                "id": 937,
                "name": "StructuredDocumentation",
                "src": "11313:460:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "params",
                      "scope": 1099,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct MoonwalkerPool.ModifyPositionParams",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "ModifyPositionParams",
                          "referencedDeclaration": 936,
                          "type": "struct MoonwalkerPool.ModifyPositionParams"
                        },
                        "id": 938,
                        "name": "UserDefinedTypeName",
                        "src": "11803:20:1"
                      }
                    ],
                    "id": 939,
                    "name": "VariableDeclaration",
                    "src": "11803:34:1"
                  }
                ],
                "id": 940,
                "name": "ParameterList",
                "src": "11802:36:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "position",
                      "scope": 1099,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct Position.Info",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Position.Info",
                          "referencedDeclaration": 4924,
                          "type": "struct Position.Info"
                        },
                        "id": 943,
                        "name": "UserDefinedTypeName",
                        "src": "11908:13:1"
                      }
                    ],
                    "id": 944,
                    "name": "VariableDeclaration",
                    "src": "11908:30:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 1099,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 945,
                        "name": "ElementaryTypeName",
                        "src": "11952:6:1"
                      }
                    ],
                    "id": 946,
                    "name": "VariableDeclaration",
                    "src": "11952:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 1099,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 947,
                        "name": "ElementaryTypeName",
                        "src": "11980:6:1"
                      }
                    ],
                    "id": 948,
                    "name": "VariableDeclaration",
                    "src": "11980:14:1"
                  }
                ],
                "id": 949,
                "name": "ParameterList",
                "src": "11894:110:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 941,
                    "name": "Identifier",
                    "src": "11863:14:1"
                  }
                ],
                "id": 942,
                "name": "ModifierInvocation",
                "src": "11863:14:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 527,
                              "type": "function (int24,int24) pure",
                              "value": "checkTicks"
                            },
                            "id": 950,
                            "name": "Identifier",
                            "src": "12019:10:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tickLower",
                              "referencedDeclaration": 931,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 939,
                                  "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                  "value": "params"
                                },
                                "id": 951,
                                "name": "Identifier",
                                "src": "12030:6:1"
                              }
                            ],
                            "id": 952,
                            "name": "MemberAccess",
                            "src": "12030:16:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tickUpper",
                              "referencedDeclaration": 933,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 939,
                                  "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                  "value": "params"
                                },
                                "id": 953,
                                "name": "Identifier",
                                "src": "12048:6:1"
                              }
                            ],
                            "id": 954,
                            "name": "MemberAccess",
                            "src": "12048:16:1"
                          }
                        ],
                        "id": 955,
                        "name": "FunctionCall",
                        "src": "12019:46:1"
                      }
                    ],
                    "id": 956,
                    "name": "ExpressionStatement",
                    "src": "12019:46:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        958
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_slot0",
                          "scope": 1098,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct MoonwalkerPool.Slot0",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Slot0",
                              "referencedDeclaration": 375,
                              "type": "struct MoonwalkerPool.Slot0"
                            },
                            "id": 957,
                            "name": "UserDefinedTypeName",
                            "src": "12076:5:1"
                          }
                        ],
                        "id": 958,
                        "name": "VariableDeclaration",
                        "src": "12076:19:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 379,
                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                          "value": "slot0"
                        },
                        "id": 959,
                        "name": "Identifier",
                        "src": "12098:5:1"
                      }
                    ],
                    "id": 960,
                    "name": "VariableDeclarationStatement",
                    "src": "12076:27:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Position.Info storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 944,
                              "type": "struct Position.Info storage pointer",
                              "value": "position"
                            },
                            "id": 961,
                            "name": "Identifier",
                            "src": "12144:8:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Position.Info storage pointer",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1262,
                                  "type": "function (address,int24,int24,int128,int24) returns (struct Position.Info storage pointer)",
                                  "value": "_updatePosition"
                                },
                                "id": 962,
                                "name": "Identifier",
                                "src": "12155:15:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "owner",
                                  "referencedDeclaration": 929,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 939,
                                      "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                      "value": "params"
                                    },
                                    "id": 963,
                                    "name": "Identifier",
                                    "src": "12184:6:1"
                                  }
                                ],
                                "id": 964,
                                "name": "MemberAccess",
                                "src": "12184:12:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tickLower",
                                  "referencedDeclaration": 931,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 939,
                                      "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                      "value": "params"
                                    },
                                    "id": 965,
                                    "name": "Identifier",
                                    "src": "12210:6:1"
                                  }
                                ],
                                "id": 966,
                                "name": "MemberAccess",
                                "src": "12210:16:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tickUpper",
                                  "referencedDeclaration": 933,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 939,
                                      "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                      "value": "params"
                                    },
                                    "id": 967,
                                    "name": "Identifier",
                                    "src": "12240:6:1"
                                  }
                                ],
                                "id": 968,
                                "name": "MemberAccess",
                                "src": "12240:16:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "liquidityDelta",
                                  "referencedDeclaration": 935,
                                  "type": "int128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 939,
                                      "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                      "value": "params"
                                    },
                                    "id": 969,
                                    "name": "Identifier",
                                    "src": "12270:6:1"
                                  }
                                ],
                                "id": 970,
                                "name": "MemberAccess",
                                "src": "12270:21:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tick",
                                  "referencedDeclaration": 364,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 958,
                                      "type": "struct MoonwalkerPool.Slot0 memory",
                                      "value": "_slot0"
                                    },
                                    "id": 971,
                                    "name": "Identifier",
                                    "src": "12305:6:1"
                                  }
                                ],
                                "id": 972,
                                "name": "MemberAccess",
                                "src": "12305:11:1"
                              }
                            ],
                            "id": 973,
                            "name": "FunctionCall",
                            "src": "12155:171:1"
                          }
                        ],
                        "id": 974,
                        "name": "Assignment",
                        "src": "12144:182:1"
                      }
                    ],
                    "id": 975,
                    "name": "ExpressionStatement",
                    "src": "12144:182:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidityDelta",
                              "referencedDeclaration": 935,
                              "type": "int128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 939,
                                  "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                  "value": "params"
                                },
                                "id": 976,
                                "name": "Identifier",
                                "src": "12341:6:1"
                              }
                            ],
                            "id": 977,
                            "name": "MemberAccess",
                            "src": "12341:21:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 978,
                            "name": "Literal",
                            "src": "12366:1:1"
                          }
                        ],
                        "id": 979,
                        "name": "BinaryOperation",
                        "src": "12341:26:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tick",
                                      "referencedDeclaration": 364,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 958,
                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                          "value": "_slot0"
                                        },
                                        "id": 980,
                                        "name": "Identifier",
                                        "src": "12387:6:1"
                                      }
                                    ],
                                    "id": 981,
                                    "name": "MemberAccess",
                                    "src": "12387:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tickLower",
                                      "referencedDeclaration": 931,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 939,
                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                          "value": "params"
                                        },
                                        "id": 982,
                                        "name": "Identifier",
                                        "src": "12401:6:1"
                                      }
                                    ],
                                    "id": 983,
                                    "name": "MemberAccess",
                                    "src": "12401:16:1"
                                  }
                                ],
                                "id": 984,
                                "name": "BinaryOperation",
                                "src": "12387:30:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 946,
                                              "type": "int256",
                                              "value": "amount0"
                                            },
                                            "id": 985,
                                            "name": "Identifier",
                                            "src": "12666:7:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint160",
                                                      "typeString": "uint160"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint160",
                                                      "typeString": "uint160"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_int128",
                                                      "typeString": "int128"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "getAmount0Delta",
                                                  "referencedDeclaration": 5623,
                                                  "type": "function (uint160,uint160,int128) pure returns (int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 5666,
                                                      "type": "type(library SqrtPriceMath)",
                                                      "value": "SqrtPriceMath"
                                                    },
                                                    "id": 986,
                                                    "name": "Identifier",
                                                    "src": "12676:13:1"
                                                  }
                                                ],
                                                "id": 987,
                                                "name": "MemberAccess",
                                                "src": "12676:29:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "uint160",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int24",
                                                          "typeString": "int24"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getSqrtRatioAtTick",
                                                      "referencedDeclaration": 7030,
                                                      "type": "function (int24) pure returns (uint160)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 7170,
                                                          "type": "type(library TickMath)",
                                                          "value": "TickMath"
                                                        },
                                                        "id": 988,
                                                        "name": "Identifier",
                                                        "src": "12727:8:1"
                                                      }
                                                    ],
                                                    "id": 989,
                                                    "name": "MemberAccess",
                                                    "src": "12727:27:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tickLower",
                                                      "referencedDeclaration": 931,
                                                      "type": "int24"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 990,
                                                        "name": "Identifier",
                                                        "src": "12755:6:1"
                                                      }
                                                    ],
                                                    "id": 991,
                                                    "name": "MemberAccess",
                                                    "src": "12755:16:1"
                                                  }
                                                ],
                                                "id": 992,
                                                "name": "FunctionCall",
                                                "src": "12727:45:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "uint160",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int24",
                                                          "typeString": "int24"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getSqrtRatioAtTick",
                                                      "referencedDeclaration": 7030,
                                                      "type": "function (int24) pure returns (uint160)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 7170,
                                                          "type": "type(library TickMath)",
                                                          "value": "TickMath"
                                                        },
                                                        "id": 993,
                                                        "name": "Identifier",
                                                        "src": "12794:8:1"
                                                      }
                                                    ],
                                                    "id": 994,
                                                    "name": "MemberAccess",
                                                    "src": "12794:27:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tickUpper",
                                                      "referencedDeclaration": 933,
                                                      "type": "int24"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 995,
                                                        "name": "Identifier",
                                                        "src": "12822:6:1"
                                                      }
                                                    ],
                                                    "id": 996,
                                                    "name": "MemberAccess",
                                                    "src": "12822:16:1"
                                                  }
                                                ],
                                                "id": 997,
                                                "name": "FunctionCall",
                                                "src": "12794:45:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "liquidityDelta",
                                                  "referencedDeclaration": 935,
                                                  "type": "int128"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 939,
                                                      "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                      "value": "params"
                                                    },
                                                    "id": 998,
                                                    "name": "Identifier",
                                                    "src": "12861:6:1"
                                                  }
                                                ],
                                                "id": 999,
                                                "name": "MemberAccess",
                                                "src": "12861:21:1"
                                              }
                                            ],
                                            "id": 1000,
                                            "name": "FunctionCall",
                                            "src": "12676:224:1"
                                          }
                                        ],
                                        "id": 1001,
                                        "name": "Assignment",
                                        "src": "12666:234:1"
                                      }
                                    ],
                                    "id": 1002,
                                    "name": "ExpressionStatement",
                                    "src": "12666:234:1"
                                  }
                                ],
                                "id": 1003,
                                "name": "Block",
                                "src": "12419:496:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tick",
                                          "referencedDeclaration": 364,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 958,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "_slot0"
                                            },
                                            "id": 1004,
                                            "name": "Identifier",
                                            "src": "12925:6:1"
                                          }
                                        ],
                                        "id": 1005,
                                        "name": "MemberAccess",
                                        "src": "12925:11:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tickUpper",
                                          "referencedDeclaration": 933,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 939,
                                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                              "value": "params"
                                            },
                                            "id": 1006,
                                            "name": "Identifier",
                                            "src": "12939:6:1"
                                          }
                                        ],
                                        "id": 1007,
                                        "name": "MemberAccess",
                                        "src": "12939:16:1"
                                      }
                                    ],
                                    "id": 1008,
                                    "name": "BinaryOperation",
                                    "src": "12925:30:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "assignments": [
                                            1010
                                          ]
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "constant": false,
                                              "mutability": "mutable",
                                              "name": "liquidityBefore",
                                              "scope": 1074,
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "type": "uint128",
                                              "visibility": "internal"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint128",
                                                  "type": "uint128"
                                                },
                                                "id": 1009,
                                                "name": "ElementaryTypeName",
                                                "src": "13034:7:1"
                                              }
                                            ],
                                            "id": 1010,
                                            "name": "VariableDeclaration",
                                            "src": "13034:23:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 400,
                                              "type": "uint128",
                                              "value": "liquidity"
                                            },
                                            "id": 1011,
                                            "name": "Identifier",
                                            "src": "13060:9:1"
                                          }
                                        ],
                                        "id": 1012,
                                        "name": "VariableDeclarationStatement",
                                        "src": "13034:35:1"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "tuple()"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "type": "tuple(uint16,uint16)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "member_name": "observationIndex",
                                                      "referencedDeclaration": 366,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 379,
                                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                                          "value": "slot0"
                                                        },
                                                        "id": 1013,
                                                        "name": "Identifier",
                                                        "src": "13160:5:1"
                                                      }
                                                    ],
                                                    "id": 1015,
                                                    "name": "MemberAccess",
                                                    "src": "13160:22:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "member_name": "observationCardinality",
                                                      "referencedDeclaration": 368,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 379,
                                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                                          "value": "slot0"
                                                        },
                                                        "id": 1016,
                                                        "name": "Identifier",
                                                        "src": "13184:5:1"
                                                      }
                                                    ],
                                                    "id": 1017,
                                                    "name": "MemberAccess",
                                                    "src": "13184:28:1"
                                                  }
                                                ],
                                                "id": 1018,
                                                "name": "TupleExpression",
                                                "src": "13159:54:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "tuple(uint16,uint16)",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint16",
                                                          "typeString": "uint16"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint32",
                                                          "typeString": "uint32"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int24",
                                                          "typeString": "int24"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint128",
                                                          "typeString": "uint128"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint16",
                                                          "typeString": "uint16"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint16",
                                                          "typeString": "uint16"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "write",
                                                      "referencedDeclaration": 4350,
                                                      "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 424,
                                                          "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                                          "value": "observations"
                                                        },
                                                        "id": 1019,
                                                        "name": "Identifier",
                                                        "src": "13216:12:1"
                                                      }
                                                    ],
                                                    "id": 1020,
                                                    "name": "MemberAccess",
                                                    "src": "13216:18:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "observationIndex",
                                                      "referencedDeclaration": 366,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1021,
                                                        "name": "Identifier",
                                                        "src": "13256:6:1"
                                                      }
                                                    ],
                                                    "id": 1022,
                                                    "name": "MemberAccess",
                                                    "src": "13256:23:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "arguments": [
                                                        null
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint32",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            null
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 540,
                                                          "type": "function () view returns (uint32)",
                                                          "value": "_blockTimestamp"
                                                        },
                                                        "id": 1023,
                                                        "name": "Identifier",
                                                        "src": "13301:15:1"
                                                      }
                                                    ],
                                                    "id": 1024,
                                                    "name": "FunctionCall",
                                                    "src": "13301:17:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tick",
                                                      "referencedDeclaration": 364,
                                                      "type": "int24"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1025,
                                                        "name": "Identifier",
                                                        "src": "13340:6:1"
                                                      }
                                                    ],
                                                    "id": 1026,
                                                    "name": "MemberAccess",
                                                    "src": "13340:11:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1010,
                                                      "type": "uint128",
                                                      "value": "liquidityBefore"
                                                    },
                                                    "id": 1027,
                                                    "name": "Identifier",
                                                    "src": "13373:15:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "observationCardinality",
                                                      "referencedDeclaration": 368,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1028,
                                                        "name": "Identifier",
                                                        "src": "13410:6:1"
                                                      }
                                                    ],
                                                    "id": 1029,
                                                    "name": "MemberAccess",
                                                    "src": "13410:29:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "observationCardinalityNext",
                                                      "referencedDeclaration": 370,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1030,
                                                        "name": "Identifier",
                                                        "src": "13461:6:1"
                                                      }
                                                    ],
                                                    "id": 1031,
                                                    "name": "MemberAccess",
                                                    "src": "13461:33:1"
                                                  }
                                                ],
                                                "id": 1032,
                                                "name": "FunctionCall",
                                                "src": "13216:296:1"
                                              }
                                            ],
                                            "id": 1033,
                                            "name": "Assignment",
                                            "src": "13159:353:1"
                                          }
                                        ],
                                        "id": 1034,
                                        "name": "ExpressionStatement",
                                        "src": "13159:353:1"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 946,
                                                  "type": "int256",
                                                  "value": "amount0"
                                                },
                                                "id": 1035,
                                                "name": "Identifier",
                                                "src": "13531:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAmount0Delta",
                                                      "referencedDeclaration": 5623,
                                                      "type": "function (uint160,uint160,int128) pure returns (int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 5666,
                                                          "type": "type(library SqrtPriceMath)",
                                                          "value": "SqrtPriceMath"
                                                        },
                                                        "id": 1036,
                                                        "name": "Identifier",
                                                        "src": "13541:13:1"
                                                      }
                                                    ],
                                                    "id": 1037,
                                                    "name": "MemberAccess",
                                                    "src": "13541:29:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "sqrtPriceX96",
                                                      "referencedDeclaration": 362,
                                                      "type": "uint160"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1038,
                                                        "name": "Identifier",
                                                        "src": "13592:6:1"
                                                      }
                                                    ],
                                                    "id": 1039,
                                                    "name": "MemberAccess",
                                                    "src": "13592:19:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint160",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_int24",
                                                              "typeString": "int24"
                                                            }
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "getSqrtRatioAtTick",
                                                          "referencedDeclaration": 7030,
                                                          "type": "function (int24) pure returns (uint160)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 7170,
                                                              "type": "type(library TickMath)",
                                                              "value": "TickMath"
                                                            },
                                                            "id": 1040,
                                                            "name": "Identifier",
                                                            "src": "13633:8:1"
                                                          }
                                                        ],
                                                        "id": 1041,
                                                        "name": "MemberAccess",
                                                        "src": "13633:27:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "tickUpper",
                                                          "referencedDeclaration": 933,
                                                          "type": "int24"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 939,
                                                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                              "value": "params"
                                                            },
                                                            "id": 1042,
                                                            "name": "Identifier",
                                                            "src": "13661:6:1"
                                                          }
                                                        ],
                                                        "id": 1043,
                                                        "name": "MemberAccess",
                                                        "src": "13661:16:1"
                                                      }
                                                    ],
                                                    "id": 1044,
                                                    "name": "FunctionCall",
                                                    "src": "13633:45:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityDelta",
                                                      "referencedDeclaration": 935,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 1045,
                                                        "name": "Identifier",
                                                        "src": "13700:6:1"
                                                      }
                                                    ],
                                                    "id": 1046,
                                                    "name": "MemberAccess",
                                                    "src": "13700:21:1"
                                                  }
                                                ],
                                                "id": 1047,
                                                "name": "FunctionCall",
                                                "src": "13541:198:1"
                                              }
                                            ],
                                            "id": 1048,
                                            "name": "Assignment",
                                            "src": "13531:208:1"
                                          }
                                        ],
                                        "id": 1049,
                                        "name": "ExpressionStatement",
                                        "src": "13531:208:1"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 948,
                                                  "type": "int256",
                                                  "value": "amount1"
                                                },
                                                "id": 1050,
                                                "name": "Identifier",
                                                "src": "13757:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAmount1Delta",
                                                      "referencedDeclaration": 5665,
                                                      "type": "function (uint160,uint160,int128) pure returns (int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 5666,
                                                          "type": "type(library SqrtPriceMath)",
                                                          "value": "SqrtPriceMath"
                                                        },
                                                        "id": 1051,
                                                        "name": "Identifier",
                                                        "src": "13767:13:1"
                                                      }
                                                    ],
                                                    "id": 1052,
                                                    "name": "MemberAccess",
                                                    "src": "13767:29:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint160",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_int24",
                                                              "typeString": "int24"
                                                            }
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "getSqrtRatioAtTick",
                                                          "referencedDeclaration": 7030,
                                                          "type": "function (int24) pure returns (uint160)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 7170,
                                                              "type": "type(library TickMath)",
                                                              "value": "TickMath"
                                                            },
                                                            "id": 1053,
                                                            "name": "Identifier",
                                                            "src": "13818:8:1"
                                                          }
                                                        ],
                                                        "id": 1054,
                                                        "name": "MemberAccess",
                                                        "src": "13818:27:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "tickLower",
                                                          "referencedDeclaration": 931,
                                                          "type": "int24"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 939,
                                                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                              "value": "params"
                                                            },
                                                            "id": 1055,
                                                            "name": "Identifier",
                                                            "src": "13846:6:1"
                                                          }
                                                        ],
                                                        "id": 1056,
                                                        "name": "MemberAccess",
                                                        "src": "13846:16:1"
                                                      }
                                                    ],
                                                    "id": 1057,
                                                    "name": "FunctionCall",
                                                    "src": "13818:45:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "sqrtPriceX96",
                                                      "referencedDeclaration": 362,
                                                      "type": "uint160"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 958,
                                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                                          "value": "_slot0"
                                                        },
                                                        "id": 1058,
                                                        "name": "Identifier",
                                                        "src": "13885:6:1"
                                                      }
                                                    ],
                                                    "id": 1059,
                                                    "name": "MemberAccess",
                                                    "src": "13885:19:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityDelta",
                                                      "referencedDeclaration": 935,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 1060,
                                                        "name": "Identifier",
                                                        "src": "13926:6:1"
                                                      }
                                                    ],
                                                    "id": 1061,
                                                    "name": "MemberAccess",
                                                    "src": "13926:21:1"
                                                  }
                                                ],
                                                "id": 1062,
                                                "name": "FunctionCall",
                                                "src": "13767:198:1"
                                              }
                                            ],
                                            "id": 1063,
                                            "name": "Assignment",
                                            "src": "13757:208:1"
                                          }
                                        ],
                                        "id": 1064,
                                        "name": "ExpressionStatement",
                                        "src": "13757:208:1"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "uint128"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 400,
                                                  "type": "uint128",
                                                  "value": "liquidity"
                                                },
                                                "id": 1065,
                                                "name": "Identifier",
                                                "src": "13984:9:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "uint128",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint128",
                                                          "typeString": "uint128"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "addDelta",
                                                      "referencedDeclaration": 4041,
                                                      "type": "function (uint128,int128) pure returns (uint128)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 4042,
                                                          "type": "type(library LiquidityMath)",
                                                          "value": "LiquidityMath"
                                                        },
                                                        "id": 1066,
                                                        "name": "Identifier",
                                                        "src": "13996:13:1"
                                                      }
                                                    ],
                                                    "id": 1067,
                                                    "name": "MemberAccess",
                                                    "src": "13996:22:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1010,
                                                      "type": "uint128",
                                                      "value": "liquidityBefore"
                                                    },
                                                    "id": 1068,
                                                    "name": "Identifier",
                                                    "src": "14019:15:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityDelta",
                                                      "referencedDeclaration": 935,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 1069,
                                                        "name": "Identifier",
                                                        "src": "14036:6:1"
                                                      }
                                                    ],
                                                    "id": 1070,
                                                    "name": "MemberAccess",
                                                    "src": "14036:21:1"
                                                  }
                                                ],
                                                "id": 1071,
                                                "name": "FunctionCall",
                                                "src": "13996:62:1"
                                              }
                                            ],
                                            "id": 1072,
                                            "name": "Assignment",
                                            "src": "13984:74:1"
                                          }
                                        ],
                                        "id": 1073,
                                        "name": "ExpressionStatement",
                                        "src": "13984:74:1"
                                      }
                                    ],
                                    "id": 1074,
                                    "name": "Block",
                                    "src": "12957:1116:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 948,
                                                  "type": "int256",
                                                  "value": "amount1"
                                                },
                                                "id": 1075,
                                                "name": "Identifier",
                                                "src": "14326:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAmount1Delta",
                                                      "referencedDeclaration": 5665,
                                                      "type": "function (uint160,uint160,int128) pure returns (int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 5666,
                                                          "type": "type(library SqrtPriceMath)",
                                                          "value": "SqrtPriceMath"
                                                        },
                                                        "id": 1076,
                                                        "name": "Identifier",
                                                        "src": "14336:13:1"
                                                      }
                                                    ],
                                                    "id": 1077,
                                                    "name": "MemberAccess",
                                                    "src": "14336:29:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint160",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_int24",
                                                              "typeString": "int24"
                                                            }
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "getSqrtRatioAtTick",
                                                          "referencedDeclaration": 7030,
                                                          "type": "function (int24) pure returns (uint160)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 7170,
                                                              "type": "type(library TickMath)",
                                                              "value": "TickMath"
                                                            },
                                                            "id": 1078,
                                                            "name": "Identifier",
                                                            "src": "14387:8:1"
                                                          }
                                                        ],
                                                        "id": 1079,
                                                        "name": "MemberAccess",
                                                        "src": "14387:27:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "tickLower",
                                                          "referencedDeclaration": 931,
                                                          "type": "int24"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 939,
                                                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                              "value": "params"
                                                            },
                                                            "id": 1080,
                                                            "name": "Identifier",
                                                            "src": "14415:6:1"
                                                          }
                                                        ],
                                                        "id": 1081,
                                                        "name": "MemberAccess",
                                                        "src": "14415:16:1"
                                                      }
                                                    ],
                                                    "id": 1082,
                                                    "name": "FunctionCall",
                                                    "src": "14387:45:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint160",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_int24",
                                                              "typeString": "int24"
                                                            }
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "getSqrtRatioAtTick",
                                                          "referencedDeclaration": 7030,
                                                          "type": "function (int24) pure returns (uint160)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 7170,
                                                              "type": "type(library TickMath)",
                                                              "value": "TickMath"
                                                            },
                                                            "id": 1083,
                                                            "name": "Identifier",
                                                            "src": "14454:8:1"
                                                          }
                                                        ],
                                                        "id": 1084,
                                                        "name": "MemberAccess",
                                                        "src": "14454:27:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "tickUpper",
                                                          "referencedDeclaration": 933,
                                                          "type": "int24"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 939,
                                                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                              "value": "params"
                                                            },
                                                            "id": 1085,
                                                            "name": "Identifier",
                                                            "src": "14482:6:1"
                                                          }
                                                        ],
                                                        "id": 1086,
                                                        "name": "MemberAccess",
                                                        "src": "14482:16:1"
                                                      }
                                                    ],
                                                    "id": 1087,
                                                    "name": "FunctionCall",
                                                    "src": "14454:45:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityDelta",
                                                      "referencedDeclaration": 935,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 939,
                                                          "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                                                          "value": "params"
                                                        },
                                                        "id": 1088,
                                                        "name": "Identifier",
                                                        "src": "14521:6:1"
                                                      }
                                                    ],
                                                    "id": 1089,
                                                    "name": "MemberAccess",
                                                    "src": "14521:21:1"
                                                  }
                                                ],
                                                "id": 1090,
                                                "name": "FunctionCall",
                                                "src": "14336:224:1"
                                              }
                                            ],
                                            "id": 1091,
                                            "name": "Assignment",
                                            "src": "14326:234:1"
                                          }
                                        ],
                                        "id": 1092,
                                        "name": "ExpressionStatement",
                                        "src": "14326:234:1"
                                      }
                                    ],
                                    "id": 1093,
                                    "name": "Block",
                                    "src": "14079:496:1"
                                  }
                                ],
                                "id": 1094,
                                "name": "IfStatement",
                                "src": "12921:1654:1"
                              }
                            ],
                            "id": 1095,
                            "name": "IfStatement",
                            "src": "12383:2192:1"
                          }
                        ],
                        "id": 1096,
                        "name": "Block",
                        "src": "12369:2216:1"
                      }
                    ],
                    "id": 1097,
                    "name": "IfStatement",
                    "src": "12337:2248:1"
                  }
                ],
                "id": 1098,
                "name": "Block",
                "src": "12009:2582:1"
              }
            ],
            "id": 1099,
            "name": "FunctionDefinition",
            "src": "11778:2813:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_updatePosition",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": "@dev Gets and updates a position with the given liquidity delta\n @param owner the owner of the position\n @param tickLower the lower tick of the position's tick range\n @param tickUpper the upper tick of the position's tick range\n @param tick the current tick, passed to avoid sloads"
                },
                "id": 1100,
                "name": "StructuredDocumentation",
                "src": "14597:313:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "owner",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1101,
                        "name": "ElementaryTypeName",
                        "src": "14949:7:1"
                      }
                    ],
                    "id": 1102,
                    "name": "VariableDeclaration",
                    "src": "14949:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1103,
                        "name": "ElementaryTypeName",
                        "src": "14972:5:1"
                      }
                    ],
                    "id": 1104,
                    "name": "VariableDeclaration",
                    "src": "14972:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1105,
                        "name": "ElementaryTypeName",
                        "src": "14997:5:1"
                      }
                    ],
                    "id": 1106,
                    "name": "VariableDeclaration",
                    "src": "14997:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "liquidityDelta",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 1107,
                        "name": "ElementaryTypeName",
                        "src": "15022:6:1"
                      }
                    ],
                    "id": 1108,
                    "name": "VariableDeclaration",
                    "src": "15022:21:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1109,
                        "name": "ElementaryTypeName",
                        "src": "15053:5:1"
                      }
                    ],
                    "id": 1110,
                    "name": "VariableDeclaration",
                    "src": "15053:10:1"
                  }
                ],
                "id": 1111,
                "name": "ParameterList",
                "src": "14939:130:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "position",
                      "scope": 1262,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct Position.Info",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Position.Info",
                          "referencedDeclaration": 4924,
                          "type": "struct Position.Info"
                        },
                        "id": 1112,
                        "name": "UserDefinedTypeName",
                        "src": "15087:13:1"
                      }
                    ],
                    "id": 1113,
                    "name": "VariableDeclaration",
                    "src": "15087:30:1"
                  }
                ],
                "id": 1114,
                "name": "ParameterList",
                "src": "15086:32:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Position.Info storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1113,
                              "type": "struct Position.Info storage pointer",
                              "value": "position"
                            },
                            "id": 1115,
                            "name": "Identifier",
                            "src": "15129:8:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Position.Info storage pointer",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "get",
                                  "referencedDeclaration": 4954,
                                  "type": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 418,
                                      "type": "mapping(bytes32 => struct Position.Info storage ref)",
                                      "value": "positions"
                                    },
                                    "id": 1116,
                                    "name": "Identifier",
                                    "src": "15140:9:1"
                                  }
                                ],
                                "id": 1117,
                                "name": "MemberAccess",
                                "src": "15140:13:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1102,
                                  "type": "address",
                                  "value": "owner"
                                },
                                "id": 1118,
                                "name": "Identifier",
                                "src": "15154:5:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1104,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 1119,
                                "name": "Identifier",
                                "src": "15161:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1106,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 1120,
                                "name": "Identifier",
                                "src": "15172:9:1"
                              }
                            ],
                            "id": 1121,
                            "name": "FunctionCall",
                            "src": "15140:42:1"
                          }
                        ],
                        "id": 1122,
                        "name": "Assignment",
                        "src": "15129:53:1"
                      }
                    ],
                    "id": 1123,
                    "name": "ExpressionStatement",
                    "src": "15129:53:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1125
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_feeGrowthGlobal0X128",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1124,
                            "name": "ElementaryTypeName",
                            "src": "15193:7:1"
                          }
                        ],
                        "id": 1125,
                        "name": "VariableDeclaration",
                        "src": "15193:29:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 383,
                          "type": "uint256",
                          "value": "feeGrowthGlobal0X128"
                        },
                        "id": 1126,
                        "name": "Identifier",
                        "src": "15225:20:1"
                      }
                    ],
                    "id": 1127,
                    "name": "VariableDeclarationStatement",
                    "src": "15193:52:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1129
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_feeGrowthGlobal1X128",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1128,
                            "name": "ElementaryTypeName",
                            "src": "15285:7:1"
                          }
                        ],
                        "id": 1129,
                        "name": "VariableDeclaration",
                        "src": "15285:29:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 387,
                          "type": "uint256",
                          "value": "feeGrowthGlobal1X128"
                        },
                        "id": 1130,
                        "name": "Identifier",
                        "src": "15317:20:1"
                      }
                    ],
                    "id": 1131,
                    "name": "VariableDeclarationStatement",
                    "src": "15285:52:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1133
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "flippedLower",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 1132,
                            "name": "ElementaryTypeName",
                            "src": "15427:4:1"
                          }
                        ],
                        "id": 1133,
                        "name": "VariableDeclaration",
                        "src": "15427:17:1"
                      }
                    ],
                    "id": 1134,
                    "name": "VariableDeclarationStatement",
                    "src": "15427:17:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1136
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "flippedUpper",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 1135,
                            "name": "ElementaryTypeName",
                            "src": "15454:4:1"
                          }
                        ],
                        "id": 1136,
                        "name": "VariableDeclaration",
                        "src": "15454:17:1"
                      }
                    ],
                    "id": 1137,
                    "name": "VariableDeclarationStatement",
                    "src": "15454:17:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1108,
                              "type": "int128",
                              "value": "liquidityDelta"
                            },
                            "id": 1138,
                            "name": "Identifier",
                            "src": "15485:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1139,
                            "name": "Literal",
                            "src": "15503:1:1"
                          }
                        ],
                        "id": 1140,
                        "name": "BinaryOperation",
                        "src": "15485:19:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                1142
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "scope": 1215,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint32",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint32",
                                      "type": "uint32"
                                    },
                                    "id": 1141,
                                    "name": "ElementaryTypeName",
                                    "src": "15520:6:1"
                                  }
                                ],
                                "id": 1142,
                                "name": "VariableDeclaration",
                                "src": "15520:11:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 540,
                                      "type": "function () view returns (uint32)",
                                      "value": "_blockTimestamp"
                                    },
                                    "id": 1143,
                                    "name": "Identifier",
                                    "src": "15534:15:1"
                                  }
                                ],
                                "id": 1144,
                                "name": "FunctionCall",
                                "src": "15534:17:1"
                              }
                            ],
                            "id": 1145,
                            "name": "VariableDeclarationStatement",
                            "src": "15520:31:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                1147,
                                1149
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "tickCumulative",
                                  "scope": 1215,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "int56",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "int56",
                                      "type": "int56"
                                    },
                                    "id": 1146,
                                    "name": "ElementaryTypeName",
                                    "src": "15566:5:1"
                                  }
                                ],
                                "id": 1147,
                                "name": "VariableDeclaration",
                                "src": "15566:20:1"
                              },
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "secondsPerLiquidityCumulativeX128",
                                  "scope": 1215,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint160",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint160",
                                      "type": "uint160"
                                    },
                                    "id": 1148,
                                    "name": "ElementaryTypeName",
                                    "src": "15588:7:1"
                                  }
                                ],
                                "id": 1149,
                                "name": "VariableDeclaration",
                                "src": "15588:41:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple(int56,uint160)",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observeSingle",
                                      "referencedDeclaration": 4820,
                                      "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 424,
                                          "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                          "value": "observations"
                                        },
                                        "id": 1150,
                                        "name": "Identifier",
                                        "src": "15649:12:1"
                                      }
                                    ],
                                    "id": 1151,
                                    "name": "MemberAccess",
                                    "src": "15649:26:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1142,
                                      "type": "uint32",
                                      "value": "time"
                                    },
                                    "id": 1152,
                                    "name": "Identifier",
                                    "src": "15697:4:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1153,
                                    "name": "Literal",
                                    "src": "15723:1:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tick",
                                      "referencedDeclaration": 364,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 1154,
                                        "name": "Identifier",
                                        "src": "15746:5:1"
                                      }
                                    ],
                                    "id": 1155,
                                    "name": "MemberAccess",
                                    "src": "15746:10:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observationIndex",
                                      "referencedDeclaration": 366,
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 1156,
                                        "name": "Identifier",
                                        "src": "15778:5:1"
                                      }
                                    ],
                                    "id": 1157,
                                    "name": "MemberAccess",
                                    "src": "15778:22:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 400,
                                      "type": "uint128",
                                      "value": "liquidity"
                                    },
                                    "id": 1158,
                                    "name": "Identifier",
                                    "src": "15822:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observationCardinality",
                                      "referencedDeclaration": 368,
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 1159,
                                        "name": "Identifier",
                                        "src": "15853:5:1"
                                      }
                                    ],
                                    "id": 1160,
                                    "name": "MemberAccess",
                                    "src": "15853:28:1"
                                  }
                                ],
                                "id": 1161,
                                "name": "FunctionCall",
                                "src": "15649:250:1"
                              }
                            ],
                            "id": 1162,
                            "name": "VariableDeclarationStatement",
                            "src": "15565:334:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1133,
                                      "type": "bool",
                                      "value": "flippedLower"
                                    },
                                    "id": 1163,
                                    "name": "Identifier",
                                    "src": "15914:12:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int128",
                                              "typeString": "int128"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            },
                                            {
                                              "typeIdentifier": "t_int56",
                                              "typeString": "int56"
                                            },
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "update",
                                          "referencedDeclaration": 6281,
                                          "type": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 406,
                                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                                              "value": "ticks"
                                            },
                                            "id": 1164,
                                            "name": "Identifier",
                                            "src": "15929:5:1"
                                          }
                                        ],
                                        "id": 1165,
                                        "name": "MemberAccess",
                                        "src": "15929:12:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1104,
                                          "type": "int24",
                                          "value": "tickLower"
                                        },
                                        "id": 1166,
                                        "name": "Identifier",
                                        "src": "15959:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1110,
                                          "type": "int24",
                                          "value": "tick"
                                        },
                                        "id": 1167,
                                        "name": "Identifier",
                                        "src": "15986:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1108,
                                          "type": "int128",
                                          "value": "liquidityDelta"
                                        },
                                        "id": 1168,
                                        "name": "Identifier",
                                        "src": "16008:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1125,
                                          "type": "uint256",
                                          "value": "_feeGrowthGlobal0X128"
                                        },
                                        "id": 1169,
                                        "name": "Identifier",
                                        "src": "16040:21:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1129,
                                          "type": "uint256",
                                          "value": "_feeGrowthGlobal1X128"
                                        },
                                        "id": 1170,
                                        "name": "Identifier",
                                        "src": "16079:21:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1149,
                                          "type": "uint160",
                                          "value": "secondsPerLiquidityCumulativeX128"
                                        },
                                        "id": 1171,
                                        "name": "Identifier",
                                        "src": "16118:33:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1147,
                                          "type": "int56",
                                          "value": "tickCumulative"
                                        },
                                        "id": 1172,
                                        "name": "Identifier",
                                        "src": "16169:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1142,
                                          "type": "uint32",
                                          "value": "time"
                                        },
                                        "id": 1173,
                                        "name": "Identifier",
                                        "src": "16201:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 1174,
                                        "name": "Literal",
                                        "src": "16223:5:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 360,
                                          "type": "uint128",
                                          "value": "maxLiquidityPerTick"
                                        },
                                        "id": 1175,
                                        "name": "Identifier",
                                        "src": "16246:19:1"
                                      }
                                    ],
                                    "id": 1176,
                                    "name": "FunctionCall",
                                    "src": "15929:350:1"
                                  }
                                ],
                                "id": 1177,
                                "name": "Assignment",
                                "src": "15914:365:1"
                              }
                            ],
                            "id": 1178,
                            "name": "ExpressionStatement",
                            "src": "15914:365:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1136,
                                      "type": "bool",
                                      "value": "flippedUpper"
                                    },
                                    "id": 1179,
                                    "name": "Identifier",
                                    "src": "16293:12:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int128",
                                              "typeString": "int128"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            },
                                            {
                                              "typeIdentifier": "t_int56",
                                              "typeString": "int56"
                                            },
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "update",
                                          "referencedDeclaration": 6281,
                                          "type": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 406,
                                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                                              "value": "ticks"
                                            },
                                            "id": 1180,
                                            "name": "Identifier",
                                            "src": "16308:5:1"
                                          }
                                        ],
                                        "id": 1181,
                                        "name": "MemberAccess",
                                        "src": "16308:12:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1106,
                                          "type": "int24",
                                          "value": "tickUpper"
                                        },
                                        "id": 1182,
                                        "name": "Identifier",
                                        "src": "16338:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1110,
                                          "type": "int24",
                                          "value": "tick"
                                        },
                                        "id": 1183,
                                        "name": "Identifier",
                                        "src": "16365:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1108,
                                          "type": "int128",
                                          "value": "liquidityDelta"
                                        },
                                        "id": 1184,
                                        "name": "Identifier",
                                        "src": "16387:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1125,
                                          "type": "uint256",
                                          "value": "_feeGrowthGlobal0X128"
                                        },
                                        "id": 1185,
                                        "name": "Identifier",
                                        "src": "16419:21:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1129,
                                          "type": "uint256",
                                          "value": "_feeGrowthGlobal1X128"
                                        },
                                        "id": 1186,
                                        "name": "Identifier",
                                        "src": "16458:21:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1149,
                                          "type": "uint160",
                                          "value": "secondsPerLiquidityCumulativeX128"
                                        },
                                        "id": 1187,
                                        "name": "Identifier",
                                        "src": "16497:33:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1147,
                                          "type": "int56",
                                          "value": "tickCumulative"
                                        },
                                        "id": 1188,
                                        "name": "Identifier",
                                        "src": "16548:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1142,
                                          "type": "uint32",
                                          "value": "time"
                                        },
                                        "id": 1189,
                                        "name": "Identifier",
                                        "src": "16580:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 1190,
                                        "name": "Literal",
                                        "src": "16602:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 360,
                                          "type": "uint128",
                                          "value": "maxLiquidityPerTick"
                                        },
                                        "id": 1191,
                                        "name": "Identifier",
                                        "src": "16624:19:1"
                                      }
                                    ],
                                    "id": 1192,
                                    "name": "FunctionCall",
                                    "src": "16308:349:1"
                                  }
                                ],
                                "id": 1193,
                                "name": "Assignment",
                                "src": "16293:364:1"
                              }
                            ],
                            "id": 1194,
                            "name": "ExpressionStatement",
                            "src": "16293:364:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1133,
                                  "type": "bool",
                                  "value": "flippedLower"
                                },
                                "id": 1195,
                                "name": "Identifier",
                                "src": "16676:12:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "flipTick",
                                              "referencedDeclaration": 6455,
                                              "type": "function (mapping(int16 => uint256),int24,int24)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 412,
                                                  "type": "mapping(int16 => uint256)",
                                                  "value": "tickBitmap"
                                                },
                                                "id": 1196,
                                                "name": "Identifier",
                                                "src": "16708:10:1"
                                              }
                                            ],
                                            "id": 1198,
                                            "name": "MemberAccess",
                                            "src": "16708:19:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1104,
                                              "type": "int24",
                                              "value": "tickLower"
                                            },
                                            "id": 1199,
                                            "name": "Identifier",
                                            "src": "16728:9:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 356,
                                              "type": "int24",
                                              "value": "tickSpacing"
                                            },
                                            "id": 1200,
                                            "name": "Identifier",
                                            "src": "16739:11:1"
                                          }
                                        ],
                                        "id": 1201,
                                        "name": "FunctionCall",
                                        "src": "16708:43:1"
                                      }
                                    ],
                                    "id": 1202,
                                    "name": "ExpressionStatement",
                                    "src": "16708:43:1"
                                  }
                                ],
                                "id": 1203,
                                "name": "Block",
                                "src": "16690:76:1"
                              }
                            ],
                            "id": 1204,
                            "name": "IfStatement",
                            "src": "16672:94:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1136,
                                  "type": "bool",
                                  "value": "flippedUpper"
                                },
                                "id": 1205,
                                "name": "Identifier",
                                "src": "16783:12:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "flipTick",
                                              "referencedDeclaration": 6455,
                                              "type": "function (mapping(int16 => uint256),int24,int24)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 412,
                                                  "type": "mapping(int16 => uint256)",
                                                  "value": "tickBitmap"
                                                },
                                                "id": 1206,
                                                "name": "Identifier",
                                                "src": "16815:10:1"
                                              }
                                            ],
                                            "id": 1208,
                                            "name": "MemberAccess",
                                            "src": "16815:19:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1106,
                                              "type": "int24",
                                              "value": "tickUpper"
                                            },
                                            "id": 1209,
                                            "name": "Identifier",
                                            "src": "16835:9:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 356,
                                              "type": "int24",
                                              "value": "tickSpacing"
                                            },
                                            "id": 1210,
                                            "name": "Identifier",
                                            "src": "16846:11:1"
                                          }
                                        ],
                                        "id": 1211,
                                        "name": "FunctionCall",
                                        "src": "16815:43:1"
                                      }
                                    ],
                                    "id": 1212,
                                    "name": "ExpressionStatement",
                                    "src": "16815:43:1"
                                  }
                                ],
                                "id": 1213,
                                "name": "Block",
                                "src": "16797:76:1"
                              }
                            ],
                            "id": 1214,
                            "name": "IfStatement",
                            "src": "16779:94:1"
                          }
                        ],
                        "id": 1215,
                        "name": "Block",
                        "src": "15506:1377:1"
                      }
                    ],
                    "id": 1216,
                    "name": "IfStatement",
                    "src": "15481:1402:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1218,
                        1220
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthInside0X128",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1217,
                            "name": "ElementaryTypeName",
                            "src": "16894:7:1"
                          }
                        ],
                        "id": 1218,
                        "name": "VariableDeclaration",
                        "src": "16894:28:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthInside1X128",
                          "scope": 1261,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1219,
                            "name": "ElementaryTypeName",
                            "src": "16924:7:1"
                          }
                        ],
                        "id": 1220,
                        "name": "VariableDeclaration",
                        "src": "16924:28:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getFeeGrowthInside",
                              "referencedDeclaration": 6131,
                              "type": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int24,uint256,uint256) view returns (uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 406,
                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                  "value": "ticks"
                                },
                                "id": 1221,
                                "name": "Identifier",
                                "src": "16968:5:1"
                              }
                            ],
                            "id": 1222,
                            "name": "MemberAccess",
                            "src": "16968:24:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1104,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 1223,
                            "name": "Identifier",
                            "src": "16993:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1106,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 1224,
                            "name": "Identifier",
                            "src": "17004:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1110,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 1225,
                            "name": "Identifier",
                            "src": "17015:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1125,
                              "type": "uint256",
                              "value": "_feeGrowthGlobal0X128"
                            },
                            "id": 1226,
                            "name": "Identifier",
                            "src": "17021:21:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1129,
                              "type": "uint256",
                              "value": "_feeGrowthGlobal1X128"
                            },
                            "id": 1227,
                            "name": "Identifier",
                            "src": "17044:21:1"
                          }
                        ],
                        "id": 1228,
                        "name": "FunctionCall",
                        "src": "16968:98:1"
                      }
                    ],
                    "id": 1229,
                    "name": "VariableDeclarationStatement",
                    "src": "16893:173:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "update",
                              "referencedDeclaration": 5079,
                              "type": "function (struct Position.Info storage pointer,int128,uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1113,
                                  "type": "struct Position.Info storage pointer",
                                  "value": "position"
                                },
                                "id": 1230,
                                "name": "Identifier",
                                "src": "17077:8:1"
                              }
                            ],
                            "id": 1232,
                            "name": "MemberAccess",
                            "src": "17077:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1108,
                              "type": "int128",
                              "value": "liquidityDelta"
                            },
                            "id": 1233,
                            "name": "Identifier",
                            "src": "17093:14:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1218,
                              "type": "uint256",
                              "value": "feeGrowthInside0X128"
                            },
                            "id": 1234,
                            "name": "Identifier",
                            "src": "17109:20:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1220,
                              "type": "uint256",
                              "value": "feeGrowthInside1X128"
                            },
                            "id": 1235,
                            "name": "Identifier",
                            "src": "17131:20:1"
                          }
                        ],
                        "id": 1236,
                        "name": "FunctionCall",
                        "src": "17077:75:1"
                      }
                    ],
                    "id": 1237,
                    "name": "ExpressionStatement",
                    "src": "17077:75:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1108,
                              "type": "int128",
                              "value": "liquidityDelta"
                            },
                            "id": 1238,
                            "name": "Identifier",
                            "src": "17223:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1239,
                            "name": "Literal",
                            "src": "17240:1:1"
                          }
                        ],
                        "id": 1240,
                        "name": "BinaryOperation",
                        "src": "17223:18:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1133,
                                  "type": "bool",
                                  "value": "flippedLower"
                                },
                                "id": 1241,
                                "name": "Identifier",
                                "src": "17261:12:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "clear",
                                              "referencedDeclaration": 6297,
                                              "type": "function (mapping(int24 => struct Tick.Info storage ref),int24)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 406,
                                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                                  "value": "ticks"
                                                },
                                                "id": 1242,
                                                "name": "Identifier",
                                                "src": "17293:5:1"
                                              }
                                            ],
                                            "id": 1244,
                                            "name": "MemberAccess",
                                            "src": "17293:11:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1104,
                                              "type": "int24",
                                              "value": "tickLower"
                                            },
                                            "id": 1245,
                                            "name": "Identifier",
                                            "src": "17305:9:1"
                                          }
                                        ],
                                        "id": 1246,
                                        "name": "FunctionCall",
                                        "src": "17293:22:1"
                                      }
                                    ],
                                    "id": 1247,
                                    "name": "ExpressionStatement",
                                    "src": "17293:22:1"
                                  }
                                ],
                                "id": 1248,
                                "name": "Block",
                                "src": "17275:55:1"
                              }
                            ],
                            "id": 1249,
                            "name": "IfStatement",
                            "src": "17257:73:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1136,
                                  "type": "bool",
                                  "value": "flippedUpper"
                                },
                                "id": 1250,
                                "name": "Identifier",
                                "src": "17347:12:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "clear",
                                              "referencedDeclaration": 6297,
                                              "type": "function (mapping(int24 => struct Tick.Info storage ref),int24)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 406,
                                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                                  "value": "ticks"
                                                },
                                                "id": 1251,
                                                "name": "Identifier",
                                                "src": "17379:5:1"
                                              }
                                            ],
                                            "id": 1253,
                                            "name": "MemberAccess",
                                            "src": "17379:11:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1106,
                                              "type": "int24",
                                              "value": "tickUpper"
                                            },
                                            "id": 1254,
                                            "name": "Identifier",
                                            "src": "17391:9:1"
                                          }
                                        ],
                                        "id": 1255,
                                        "name": "FunctionCall",
                                        "src": "17379:22:1"
                                      }
                                    ],
                                    "id": 1256,
                                    "name": "ExpressionStatement",
                                    "src": "17379:22:1"
                                  }
                                ],
                                "id": 1257,
                                "name": "Block",
                                "src": "17361:55:1"
                              }
                            ],
                            "id": 1258,
                            "name": "IfStatement",
                            "src": "17343:73:1"
                          }
                        ],
                        "id": 1259,
                        "name": "Block",
                        "src": "17243:183:1"
                      }
                    ],
                    "id": 1260,
                    "name": "IfStatement",
                    "src": "17219:207:1"
                  }
                ],
                "id": 1261,
                "name": "Block",
                "src": "15119:2313:1"
              }
            ],
            "id": 1262,
            "name": "FunctionDefinition",
            "src": "14915:2517:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3128
              ],
              "functionSelector": "3c8a7d8d",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "mint",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition"
                },
                "id": 1263,
                "name": "StructuredDocumentation",
                "src": "17438:108:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 1275,
                "name": "OverrideSpecifier",
                "src": "17710:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "recipient",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1264,
                        "name": "ElementaryTypeName",
                        "src": "17574:7:1"
                      }
                    ],
                    "id": 1265,
                    "name": "VariableDeclaration",
                    "src": "17574:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1266,
                        "name": "ElementaryTypeName",
                        "src": "17601:5:1"
                      }
                    ],
                    "id": 1267,
                    "name": "VariableDeclaration",
                    "src": "17601:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1268,
                        "name": "ElementaryTypeName",
                        "src": "17626:5:1"
                      }
                    ],
                    "id": 1269,
                    "name": "VariableDeclaration",
                    "src": "17626:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1270,
                        "name": "ElementaryTypeName",
                        "src": "17651:7:1"
                      }
                    ],
                    "id": 1271,
                    "name": "VariableDeclaration",
                    "src": "17651:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1272,
                        "name": "ElementaryTypeName",
                        "src": "17675:5:1"
                      }
                    ],
                    "id": 1273,
                    "name": "VariableDeclaration",
                    "src": "17675:19:1"
                  }
                ],
                "id": 1274,
                "name": "ParameterList",
                "src": "17564:136:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1278,
                        "name": "ElementaryTypeName",
                        "src": "17733:7:1"
                      }
                    ],
                    "id": 1279,
                    "name": "VariableDeclaration",
                    "src": "17733:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 1397,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1280,
                        "name": "ElementaryTypeName",
                        "src": "17750:7:1"
                      }
                    ],
                    "id": 1281,
                    "name": "VariableDeclaration",
                    "src": "17750:15:1"
                  }
                ],
                "id": 1282,
                "name": "ParameterList",
                "src": "17732:34:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 1276,
                    "name": "Identifier",
                    "src": "17719:4:1"
                  }
                ],
                "id": 1277,
                "name": "ModifierInvocation",
                "src": "17719:4:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1283,
                            "name": "Identifier",
                            "src": "17777:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1271,
                                  "type": "uint128",
                                  "value": "amount"
                                },
                                "id": 1284,
                                "name": "Identifier",
                                "src": "17785:6:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1285,
                                "name": "Literal",
                                "src": "17794:1:1"
                              }
                            ],
                            "id": 1286,
                            "name": "BinaryOperation",
                            "src": "17785:10:1"
                          }
                        ],
                        "id": 1287,
                        "name": "FunctionCall",
                        "src": "17777:19:1"
                      }
                    ],
                    "id": 1288,
                    "name": "ExpressionStatement",
                    "src": "17777:19:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null,
                        1290,
                        1292
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amount0Int",
                          "scope": 1396,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 1289,
                            "name": "ElementaryTypeName",
                            "src": "17809:6:1"
                          }
                        ],
                        "id": 1290,
                        "name": "VariableDeclaration",
                        "src": "17809:17:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amount1Int",
                          "scope": 1396,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 1291,
                            "name": "ElementaryTypeName",
                            "src": "17828:6:1"
                          }
                        ],
                        "id": 1292,
                        "name": "VariableDeclaration",
                        "src": "17828:17:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(struct Position.Info storage pointer,int256,int256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1099,
                              "type": "function (struct MoonwalkerPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)",
                              "value": "_modifyPosition"
                            },
                            "id": 1293,
                            "name": "Identifier",
                            "src": "17861:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "owner",
                                "tickLower",
                                "tickUpper",
                                "liquidityDelta"
                              ],
                              "tryCall": false,
                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 936,
                                  "type": "type(struct MoonwalkerPool.ModifyPositionParams storage pointer)",
                                  "value": "ModifyPositionParams"
                                },
                                "id": 1294,
                                "name": "Identifier",
                                "src": "17894:20:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1265,
                                  "type": "address",
                                  "value": "recipient"
                                },
                                "id": 1295,
                                "name": "Identifier",
                                "src": "17944:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1267,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 1296,
                                "name": "Identifier",
                                "src": "17986:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1269,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 1297,
                                "name": "Identifier",
                                "src": "18028:9:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "int128",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "toInt128",
                                      "referencedDeclaration": 5125,
                                      "type": "function (int256) pure returns (int128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "int256",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(int256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "int256"
                                                },
                                                "id": 1298,
                                                "name": "ElementaryTypeName",
                                                "src": "18075:6:1"
                                              }
                                            ],
                                            "id": 1299,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "18075:6:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1271,
                                              "type": "uint128",
                                              "value": "amount"
                                            },
                                            "id": 1300,
                                            "name": "Identifier",
                                            "src": "18082:6:1"
                                          }
                                        ],
                                        "id": 1301,
                                        "name": "FunctionCall",
                                        "src": "18075:14:1"
                                      }
                                    ],
                                    "id": 1302,
                                    "name": "MemberAccess",
                                    "src": "18075:23:1"
                                  }
                                ],
                                "id": 1303,
                                "name": "FunctionCall",
                                "src": "18075:25:1"
                              }
                            ],
                            "id": 1304,
                            "name": "FunctionCall",
                            "src": "17894:225:1"
                          }
                        ],
                        "id": 1305,
                        "name": "FunctionCall",
                        "src": "17861:272:1"
                      }
                    ],
                    "id": 1306,
                    "name": "VariableDeclarationStatement",
                    "src": "17806:327:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1279,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1307,
                            "name": "Identifier",
                            "src": "18144:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 1308,
                                    "name": "ElementaryTypeName",
                                    "src": "18154:7:1"
                                  }
                                ],
                                "id": 1309,
                                "name": "ElementaryTypeNameExpression",
                                "src": "18154:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1290,
                                  "type": "int256",
                                  "value": "amount0Int"
                                },
                                "id": 1310,
                                "name": "Identifier",
                                "src": "18162:10:1"
                              }
                            ],
                            "id": 1311,
                            "name": "FunctionCall",
                            "src": "18154:19:1"
                          }
                        ],
                        "id": 1312,
                        "name": "Assignment",
                        "src": "18144:29:1"
                      }
                    ],
                    "id": 1313,
                    "name": "ExpressionStatement",
                    "src": "18144:29:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1314,
                            "name": "Identifier",
                            "src": "18183:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 1315,
                                    "name": "ElementaryTypeName",
                                    "src": "18193:7:1"
                                  }
                                ],
                                "id": 1316,
                                "name": "ElementaryTypeNameExpression",
                                "src": "18193:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1292,
                                  "type": "int256",
                                  "value": "amount1Int"
                                },
                                "id": 1317,
                                "name": "Identifier",
                                "src": "18201:10:1"
                              }
                            ],
                            "id": 1318,
                            "name": "FunctionCall",
                            "src": "18193:19:1"
                          }
                        ],
                        "id": 1319,
                        "name": "Assignment",
                        "src": "18183:29:1"
                      }
                    ],
                    "id": 1320,
                    "name": "ExpressionStatement",
                    "src": "18183:29:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1322
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance0Before",
                          "scope": 1396,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1321,
                            "name": "ElementaryTypeName",
                            "src": "18223:7:1"
                          }
                        ],
                        "id": 1322,
                        "name": "VariableDeclaration",
                        "src": "18223:22:1"
                      }
                    ],
                    "id": 1323,
                    "name": "VariableDeclarationStatement",
                    "src": "18223:22:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1325
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance1Before",
                          "scope": 1396,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1324,
                            "name": "ElementaryTypeName",
                            "src": "18255:7:1"
                          }
                        ],
                        "id": 1325,
                        "name": "VariableDeclaration",
                        "src": "18255:22:1"
                      }
                    ],
                    "id": 1326,
                    "name": "VariableDeclarationStatement",
                    "src": "18255:22:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1279,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1327,
                            "name": "Identifier",
                            "src": "18291:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1328,
                            "name": "Literal",
                            "src": "18301:1:1"
                          }
                        ],
                        "id": 1329,
                        "name": "BinaryOperation",
                        "src": "18291:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1322,
                                  "type": "uint256",
                                  "value": "balance0Before"
                                },
                                "id": 1330,
                                "name": "Identifier",
                                "src": "18304:14:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 582,
                                      "type": "function () view returns (uint256)",
                                      "value": "balance0"
                                    },
                                    "id": 1331,
                                    "name": "Identifier",
                                    "src": "18321:8:1"
                                  }
                                ],
                                "id": 1332,
                                "name": "FunctionCall",
                                "src": "18321:10:1"
                              }
                            ],
                            "id": 1333,
                            "name": "Assignment",
                            "src": "18304:27:1"
                          }
                        ],
                        "id": 1334,
                        "name": "ExpressionStatement",
                        "src": "18304:27:1"
                      }
                    ],
                    "id": 1335,
                    "name": "IfStatement",
                    "src": "18287:44:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1336,
                            "name": "Identifier",
                            "src": "18345:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1337,
                            "name": "Literal",
                            "src": "18355:1:1"
                          }
                        ],
                        "id": 1338,
                        "name": "BinaryOperation",
                        "src": "18345:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1325,
                                  "type": "uint256",
                                  "value": "balance1Before"
                                },
                                "id": 1339,
                                "name": "Identifier",
                                "src": "18358:14:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 624,
                                      "type": "function () view returns (uint256)",
                                      "value": "balance1"
                                    },
                                    "id": 1340,
                                    "name": "Identifier",
                                    "src": "18375:8:1"
                                  }
                                ],
                                "id": 1341,
                                "name": "FunctionCall",
                                "src": "18375:10:1"
                              }
                            ],
                            "id": 1342,
                            "name": "Assignment",
                            "src": "18358:27:1"
                          }
                        ],
                        "id": 1343,
                        "name": "ExpressionStatement",
                        "src": "18358:27:1"
                      }
                    ],
                    "id": 1344,
                    "name": "IfStatement",
                    "src": "18341:44:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "moonwalkerMintCallback",
                              "referencedDeclaration": 3086,
                              "type": "function (uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract IMoonwalkerMintCallback",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3087,
                                      "type": "type(contract IMoonwalkerMintCallback)",
                                      "value": "IMoonwalkerMintCallback"
                                    },
                                    "id": 1345,
                                    "name": "Identifier",
                                    "src": "18395:23:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967281,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 1346,
                                        "name": "Identifier",
                                        "src": "18419:3:1"
                                      }
                                    ],
                                    "id": 1347,
                                    "name": "MemberAccess",
                                    "src": "18419:10:1"
                                  }
                                ],
                                "id": 1348,
                                "name": "FunctionCall",
                                "src": "18395:35:1"
                              }
                            ],
                            "id": 1349,
                            "name": "MemberAccess",
                            "src": "18395:58:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1279,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1350,
                            "name": "Identifier",
                            "src": "18454:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1351,
                            "name": "Identifier",
                            "src": "18463:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1273,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 1352,
                            "name": "Identifier",
                            "src": "18472:4:1"
                          }
                        ],
                        "id": 1353,
                        "name": "FunctionCall",
                        "src": "18395:82:1"
                      }
                    ],
                    "id": 1354,
                    "name": "ExpressionStatement",
                    "src": "18395:82:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1279,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1355,
                            "name": "Identifier",
                            "src": "18491:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1356,
                            "name": "Literal",
                            "src": "18501:1:1"
                          }
                        ],
                        "id": 1357,
                        "name": "BinaryOperation",
                        "src": "18491:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7",
                                      "typeString": "literal_string \"M0\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    4294967278,
                                    4294967278
                                  ],
                                  "referencedDeclaration": 4294967278,
                                  "type": "function (bool,string memory) pure",
                                  "value": "require"
                                },
                                "id": 1358,
                                "name": "Identifier",
                                "src": "18504:7:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 4067,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1322,
                                              "type": "uint256",
                                              "value": "balance0Before"
                                            },
                                            "id": 1359,
                                            "name": "Identifier",
                                            "src": "18512:14:1"
                                          }
                                        ],
                                        "id": 1360,
                                        "name": "MemberAccess",
                                        "src": "18512:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1279,
                                          "type": "uint256",
                                          "value": "amount0"
                                        },
                                        "id": 1361,
                                        "name": "Identifier",
                                        "src": "18531:7:1"
                                      }
                                    ],
                                    "id": 1362,
                                    "name": "FunctionCall",
                                    "src": "18512:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 582,
                                          "type": "function () view returns (uint256)",
                                          "value": "balance0"
                                        },
                                        "id": 1363,
                                        "name": "Identifier",
                                        "src": "18543:8:1"
                                      }
                                    ],
                                    "id": 1364,
                                    "name": "FunctionCall",
                                    "src": "18543:10:1"
                                  }
                                ],
                                "id": 1365,
                                "name": "BinaryOperation",
                                "src": "18512:41:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "4d30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "string",
                                  "type": "literal_string \"M0\"",
                                  "value": "M0"
                                },
                                "id": 1366,
                                "name": "Literal",
                                "src": "18555:4:1"
                              }
                            ],
                            "id": 1367,
                            "name": "FunctionCall",
                            "src": "18504:56:1"
                          }
                        ],
                        "id": 1368,
                        "name": "ExpressionStatement",
                        "src": "18504:56:1"
                      }
                    ],
                    "id": 1369,
                    "name": "IfStatement",
                    "src": "18487:73:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1370,
                            "name": "Identifier",
                            "src": "18574:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1371,
                            "name": "Literal",
                            "src": "18584:1:1"
                          }
                        ],
                        "id": 1372,
                        "name": "BinaryOperation",
                        "src": "18574:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de",
                                      "typeString": "literal_string \"M1\""
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    4294967278,
                                    4294967278
                                  ],
                                  "referencedDeclaration": 4294967278,
                                  "type": "function (bool,string memory) pure",
                                  "value": "require"
                                },
                                "id": 1373,
                                "name": "Identifier",
                                "src": "18587:7:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 4067,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1325,
                                              "type": "uint256",
                                              "value": "balance1Before"
                                            },
                                            "id": 1374,
                                            "name": "Identifier",
                                            "src": "18595:14:1"
                                          }
                                        ],
                                        "id": 1375,
                                        "name": "MemberAccess",
                                        "src": "18595:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1281,
                                          "type": "uint256",
                                          "value": "amount1"
                                        },
                                        "id": 1376,
                                        "name": "Identifier",
                                        "src": "18614:7:1"
                                      }
                                    ],
                                    "id": 1377,
                                    "name": "FunctionCall",
                                    "src": "18595:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 624,
                                          "type": "function () view returns (uint256)",
                                          "value": "balance1"
                                        },
                                        "id": 1378,
                                        "name": "Identifier",
                                        "src": "18626:8:1"
                                      }
                                    ],
                                    "id": 1379,
                                    "name": "FunctionCall",
                                    "src": "18626:10:1"
                                  }
                                ],
                                "id": 1380,
                                "name": "BinaryOperation",
                                "src": "18595:41:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "4d31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "string",
                                  "type": "literal_string \"M1\"",
                                  "value": "M1"
                                },
                                "id": 1381,
                                "name": "Literal",
                                "src": "18638:4:1"
                              }
                            ],
                            "id": 1382,
                            "name": "FunctionCall",
                            "src": "18587:56:1"
                          }
                        ],
                        "id": 1383,
                        "name": "ExpressionStatement",
                        "src": "18587:56:1"
                      }
                    ],
                    "id": 1384,
                    "name": "IfStatement",
                    "src": "18570:73:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3255,
                              "type": "function (address,address,int24,int24,uint128,uint256,uint256)",
                              "value": "Mint"
                            },
                            "id": 1385,
                            "name": "Identifier",
                            "src": "18659:4:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1386,
                                "name": "Identifier",
                                "src": "18664:3:1"
                              }
                            ],
                            "id": 1387,
                            "name": "MemberAccess",
                            "src": "18664:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1265,
                              "type": "address",
                              "value": "recipient"
                            },
                            "id": 1388,
                            "name": "Identifier",
                            "src": "18676:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1267,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 1389,
                            "name": "Identifier",
                            "src": "18687:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1269,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 1390,
                            "name": "Identifier",
                            "src": "18698:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1271,
                              "type": "uint128",
                              "value": "amount"
                            },
                            "id": 1391,
                            "name": "Identifier",
                            "src": "18709:6:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1279,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1392,
                            "name": "Identifier",
                            "src": "18717:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1393,
                            "name": "Identifier",
                            "src": "18726:7:1"
                          }
                        ],
                        "id": 1394,
                        "name": "FunctionCall",
                        "src": "18659:75:1"
                      }
                    ],
                    "id": 1395,
                    "name": "EmitStatement",
                    "src": "18654:80:1"
                  }
                ],
                "id": 1396,
                "name": "Block",
                "src": "17767:974:1"
              }
            ],
            "id": 1397,
            "name": "FunctionDefinition",
            "src": "17551:1190:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3146
              ],
              "functionSelector": "4f1eb3d8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "collect",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions"
                },
                "id": 1398,
                "name": "StructuredDocumentation",
                "src": "18747:38:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 1410,
                "name": "OverrideSpecifier",
                "src": "18967:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "recipient",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1399,
                        "name": "ElementaryTypeName",
                        "src": "18816:7:1"
                      }
                    ],
                    "id": 1400,
                    "name": "VariableDeclaration",
                    "src": "18816:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1401,
                        "name": "ElementaryTypeName",
                        "src": "18843:5:1"
                      }
                    ],
                    "id": 1402,
                    "name": "VariableDeclaration",
                    "src": "18843:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1403,
                        "name": "ElementaryTypeName",
                        "src": "18868:5:1"
                      }
                    ],
                    "id": 1404,
                    "name": "VariableDeclaration",
                    "src": "18868:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0Requested",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1405,
                        "name": "ElementaryTypeName",
                        "src": "18893:7:1"
                      }
                    ],
                    "id": 1406,
                    "name": "VariableDeclaration",
                    "src": "18893:24:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1Requested",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1407,
                        "name": "ElementaryTypeName",
                        "src": "18927:7:1"
                      }
                    ],
                    "id": 1408,
                    "name": "VariableDeclaration",
                    "src": "18927:24:1"
                  }
                ],
                "id": 1409,
                "name": "ParameterList",
                "src": "18806:151:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1413,
                        "name": "ElementaryTypeName",
                        "src": "18990:7:1"
                      }
                    ],
                    "id": 1414,
                    "name": "VariableDeclaration",
                    "src": "18990:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 1501,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1415,
                        "name": "ElementaryTypeName",
                        "src": "19007:7:1"
                      }
                    ],
                    "id": 1416,
                    "name": "VariableDeclaration",
                    "src": "19007:15:1"
                  }
                ],
                "id": 1417,
                "name": "ParameterList",
                "src": "18989:34:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 1411,
                    "name": "Identifier",
                    "src": "18976:4:1"
                  }
                ],
                "id": 1412,
                "name": "ModifierInvocation",
                "src": "18976:4:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1421
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "position",
                          "scope": 1500,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Position.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Position.Info",
                              "referencedDeclaration": 4924,
                              "type": "struct Position.Info"
                            },
                            "id": 1420,
                            "name": "UserDefinedTypeName",
                            "src": "19146:13:1"
                          }
                        ],
                        "id": 1421,
                        "name": "VariableDeclaration",
                        "src": "19146:30:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "struct Position.Info storage pointer",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "get",
                              "referencedDeclaration": 4954,
                              "type": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 418,
                                  "type": "mapping(bytes32 => struct Position.Info storage ref)",
                                  "value": "positions"
                                },
                                "id": 1422,
                                "name": "Identifier",
                                "src": "19179:9:1"
                              }
                            ],
                            "id": 1423,
                            "name": "MemberAccess",
                            "src": "19179:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1424,
                                "name": "Identifier",
                                "src": "19193:3:1"
                              }
                            ],
                            "id": 1425,
                            "name": "MemberAccess",
                            "src": "19193:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1402,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 1426,
                            "name": "Identifier",
                            "src": "19205:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1404,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 1427,
                            "name": "Identifier",
                            "src": "19216:9:1"
                          }
                        ],
                        "id": 1428,
                        "name": "FunctionCall",
                        "src": "19179:47:1"
                      }
                    ],
                    "id": 1429,
                    "name": "VariableDeclarationStatement",
                    "src": "19146:80:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1414,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 1430,
                            "name": "Identifier",
                            "src": "19237:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1406,
                                      "type": "uint128",
                                      "value": "amount0Requested"
                                    },
                                    "id": 1431,
                                    "name": "Identifier",
                                    "src": "19247:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tokensOwed0",
                                      "referencedDeclaration": 4921,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1421,
                                          "type": "struct Position.Info storage pointer",
                                          "value": "position"
                                        },
                                        "id": 1432,
                                        "name": "Identifier",
                                        "src": "19266:8:1"
                                      }
                                    ],
                                    "id": 1433,
                                    "name": "MemberAccess",
                                    "src": "19266:20:1"
                                  }
                                ],
                                "id": 1434,
                                "name": "BinaryOperation",
                                "src": "19247:39:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tokensOwed0",
                                  "referencedDeclaration": 4921,
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1421,
                                      "type": "struct Position.Info storage pointer",
                                      "value": "position"
                                    },
                                    "id": 1435,
                                    "name": "Identifier",
                                    "src": "19289:8:1"
                                  }
                                ],
                                "id": 1436,
                                "name": "MemberAccess",
                                "src": "19289:20:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1406,
                                  "type": "uint128",
                                  "value": "amount0Requested"
                                },
                                "id": 1437,
                                "name": "Identifier",
                                "src": "19312:16:1"
                              }
                            ],
                            "id": 1438,
                            "name": "Conditional",
                            "src": "19247:81:1"
                          }
                        ],
                        "id": 1439,
                        "name": "Assignment",
                        "src": "19237:91:1"
                      }
                    ],
                    "id": 1440,
                    "name": "ExpressionStatement",
                    "src": "19237:91:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1416,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 1441,
                            "name": "Identifier",
                            "src": "19338:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1408,
                                      "type": "uint128",
                                      "value": "amount1Requested"
                                    },
                                    "id": 1442,
                                    "name": "Identifier",
                                    "src": "19348:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tokensOwed1",
                                      "referencedDeclaration": 4923,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1421,
                                          "type": "struct Position.Info storage pointer",
                                          "value": "position"
                                        },
                                        "id": 1443,
                                        "name": "Identifier",
                                        "src": "19367:8:1"
                                      }
                                    ],
                                    "id": 1444,
                                    "name": "MemberAccess",
                                    "src": "19367:20:1"
                                  }
                                ],
                                "id": 1445,
                                "name": "BinaryOperation",
                                "src": "19348:39:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tokensOwed1",
                                  "referencedDeclaration": 4923,
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1421,
                                      "type": "struct Position.Info storage pointer",
                                      "value": "position"
                                    },
                                    "id": 1446,
                                    "name": "Identifier",
                                    "src": "19390:8:1"
                                  }
                                ],
                                "id": 1447,
                                "name": "MemberAccess",
                                "src": "19390:20:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1408,
                                  "type": "uint128",
                                  "value": "amount1Requested"
                                },
                                "id": 1448,
                                "name": "Identifier",
                                "src": "19413:16:1"
                              }
                            ],
                            "id": 1449,
                            "name": "Conditional",
                            "src": "19348:81:1"
                          }
                        ],
                        "id": 1450,
                        "name": "Assignment",
                        "src": "19338:91:1"
                      }
                    ],
                    "id": 1451,
                    "name": "ExpressionStatement",
                    "src": "19338:91:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1414,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 1452,
                            "name": "Identifier",
                            "src": "19444:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1453,
                            "name": "Literal",
                            "src": "19454:1:1"
                          }
                        ],
                        "id": 1454,
                        "name": "BinaryOperation",
                        "src": "19444:11:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "tokensOwed0",
                                      "referencedDeclaration": 4921,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1421,
                                          "type": "struct Position.Info storage pointer",
                                          "value": "position"
                                        },
                                        "id": 1455,
                                        "name": "Identifier",
                                        "src": "19471:8:1"
                                      }
                                    ],
                                    "id": 1457,
                                    "name": "MemberAccess",
                                    "src": "19471:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1414,
                                      "type": "uint128",
                                      "value": "amount0"
                                    },
                                    "id": 1458,
                                    "name": "Identifier",
                                    "src": "19495:7:1"
                                  }
                                ],
                                "id": 1459,
                                "name": "Assignment",
                                "src": "19471:31:1"
                              }
                            ],
                            "id": 1460,
                            "name": "ExpressionStatement",
                            "src": "19471:31:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeTransfer",
                                      "referencedDeclaration": 7220,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7221,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 1461,
                                        "name": "Identifier",
                                        "src": "19516:14:1"
                                      }
                                    ],
                                    "id": 1463,
                                    "name": "MemberAccess",
                                    "src": "19516:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 344,
                                      "type": "address",
                                      "value": "token0"
                                    },
                                    "id": 1464,
                                    "name": "Identifier",
                                    "src": "19544:6:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1400,
                                      "type": "address",
                                      "value": "recipient"
                                    },
                                    "id": 1465,
                                    "name": "Identifier",
                                    "src": "19552:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1414,
                                      "type": "uint128",
                                      "value": "amount0"
                                    },
                                    "id": 1466,
                                    "name": "Identifier",
                                    "src": "19563:7:1"
                                  }
                                ],
                                "id": 1467,
                                "name": "FunctionCall",
                                "src": "19516:55:1"
                              }
                            ],
                            "id": 1468,
                            "name": "ExpressionStatement",
                            "src": "19516:55:1"
                          }
                        ],
                        "id": 1469,
                        "name": "Block",
                        "src": "19457:125:1"
                      }
                    ],
                    "id": 1470,
                    "name": "IfStatement",
                    "src": "19440:142:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1416,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 1471,
                            "name": "Identifier",
                            "src": "19595:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1472,
                            "name": "Literal",
                            "src": "19605:1:1"
                          }
                        ],
                        "id": 1473,
                        "name": "BinaryOperation",
                        "src": "19595:11:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "tokensOwed1",
                                      "referencedDeclaration": 4923,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1421,
                                          "type": "struct Position.Info storage pointer",
                                          "value": "position"
                                        },
                                        "id": 1474,
                                        "name": "Identifier",
                                        "src": "19622:8:1"
                                      }
                                    ],
                                    "id": 1476,
                                    "name": "MemberAccess",
                                    "src": "19622:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1416,
                                      "type": "uint128",
                                      "value": "amount1"
                                    },
                                    "id": 1477,
                                    "name": "Identifier",
                                    "src": "19646:7:1"
                                  }
                                ],
                                "id": 1478,
                                "name": "Assignment",
                                "src": "19622:31:1"
                              }
                            ],
                            "id": 1479,
                            "name": "ExpressionStatement",
                            "src": "19622:31:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeTransfer",
                                      "referencedDeclaration": 7220,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7221,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 1480,
                                        "name": "Identifier",
                                        "src": "19667:14:1"
                                      }
                                    ],
                                    "id": 1482,
                                    "name": "MemberAccess",
                                    "src": "19667:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 348,
                                      "type": "address",
                                      "value": "token1"
                                    },
                                    "id": 1483,
                                    "name": "Identifier",
                                    "src": "19695:6:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1400,
                                      "type": "address",
                                      "value": "recipient"
                                    },
                                    "id": 1484,
                                    "name": "Identifier",
                                    "src": "19703:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1416,
                                      "type": "uint128",
                                      "value": "amount1"
                                    },
                                    "id": 1485,
                                    "name": "Identifier",
                                    "src": "19714:7:1"
                                  }
                                ],
                                "id": 1486,
                                "name": "FunctionCall",
                                "src": "19667:55:1"
                              }
                            ],
                            "id": 1487,
                            "name": "ExpressionStatement",
                            "src": "19667:55:1"
                          }
                        ],
                        "id": 1488,
                        "name": "Block",
                        "src": "19608:125:1"
                      }
                    ],
                    "id": 1489,
                    "name": "IfStatement",
                    "src": "19591:142:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3270,
                              "type": "function (address,address,int24,int24,uint128,uint128)",
                              "value": "Collect"
                            },
                            "id": 1490,
                            "name": "Identifier",
                            "src": "19748:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1491,
                                "name": "Identifier",
                                "src": "19756:3:1"
                              }
                            ],
                            "id": 1492,
                            "name": "MemberAccess",
                            "src": "19756:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1400,
                              "type": "address",
                              "value": "recipient"
                            },
                            "id": 1493,
                            "name": "Identifier",
                            "src": "19768:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1402,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 1494,
                            "name": "Identifier",
                            "src": "19779:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1404,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 1495,
                            "name": "Identifier",
                            "src": "19790:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1414,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 1496,
                            "name": "Identifier",
                            "src": "19801:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1416,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 1497,
                            "name": "Identifier",
                            "src": "19810:7:1"
                          }
                        ],
                        "id": 1498,
                        "name": "FunctionCall",
                        "src": "19748:70:1"
                      }
                    ],
                    "id": 1499,
                    "name": "EmitStatement",
                    "src": "19743:75:1"
                  }
                ],
                "id": 1500,
                "name": "Block",
                "src": "19024:801:1"
              }
            ],
            "id": 1501,
            "name": "FunctionDefinition",
            "src": "18790:1035:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3160
              ],
              "functionSelector": "a34123a7",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "burn",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition"
                },
                "id": 1502,
                "name": "StructuredDocumentation",
                "src": "19831:108:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 1510,
                "name": "OverrideSpecifier",
                "src": "20047:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 1601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1503,
                        "name": "ElementaryTypeName",
                        "src": "19967:5:1"
                      }
                    ],
                    "id": 1504,
                    "name": "VariableDeclaration",
                    "src": "19967:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 1601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 1505,
                        "name": "ElementaryTypeName",
                        "src": "19992:5:1"
                      }
                    ],
                    "id": 1506,
                    "name": "VariableDeclaration",
                    "src": "19992:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 1601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 1507,
                        "name": "ElementaryTypeName",
                        "src": "20017:7:1"
                      }
                    ],
                    "id": 1508,
                    "name": "VariableDeclaration",
                    "src": "20017:14:1"
                  }
                ],
                "id": 1509,
                "name": "ParameterList",
                "src": "19957:80:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 1601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1513,
                        "name": "ElementaryTypeName",
                        "src": "20070:7:1"
                      }
                    ],
                    "id": 1514,
                    "name": "VariableDeclaration",
                    "src": "20070:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 1601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1515,
                        "name": "ElementaryTypeName",
                        "src": "20087:7:1"
                      }
                    ],
                    "id": 1516,
                    "name": "VariableDeclaration",
                    "src": "20087:15:1"
                  }
                ],
                "id": 1517,
                "name": "ParameterList",
                "src": "20069:34:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 1511,
                    "name": "Identifier",
                    "src": "20056:4:1"
                  }
                ],
                "id": 1512,
                "name": "ModifierInvocation",
                "src": "20056:4:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1521,
                        1523,
                        1525
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "position",
                          "scope": 1600,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Position.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Position.Info",
                              "referencedDeclaration": 4924,
                              "type": "struct Position.Info"
                            },
                            "id": 1520,
                            "name": "UserDefinedTypeName",
                            "src": "20115:13:1"
                          }
                        ],
                        "id": 1521,
                        "name": "VariableDeclaration",
                        "src": "20115:30:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amount0Int",
                          "scope": 1600,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 1522,
                            "name": "ElementaryTypeName",
                            "src": "20147:6:1"
                          }
                        ],
                        "id": 1523,
                        "name": "VariableDeclaration",
                        "src": "20147:17:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amount1Int",
                          "scope": 1600,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 1524,
                            "name": "ElementaryTypeName",
                            "src": "20166:6:1"
                          }
                        ],
                        "id": 1525,
                        "name": "VariableDeclaration",
                        "src": "20166:17:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(struct Position.Info storage pointer,int256,int256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ModifyPositionParams_$936_memory_ptr",
                                  "typeString": "struct MoonwalkerPool.ModifyPositionParams memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1099,
                              "type": "function (struct MoonwalkerPool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)",
                              "value": "_modifyPosition"
                            },
                            "id": 1526,
                            "name": "Identifier",
                            "src": "20199:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "owner",
                                "tickLower",
                                "tickUpper",
                                "liquidityDelta"
                              ],
                              "tryCall": false,
                              "type": "struct MoonwalkerPool.ModifyPositionParams memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 936,
                                  "type": "type(struct MoonwalkerPool.ModifyPositionParams storage pointer)",
                                  "value": "ModifyPositionParams"
                                },
                                "id": 1527,
                                "name": "Identifier",
                                "src": "20232:20:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967281,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 1528,
                                    "name": "Identifier",
                                    "src": "20282:3:1"
                                  }
                                ],
                                "id": 1529,
                                "name": "MemberAccess",
                                "src": "20282:10:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1504,
                                  "type": "int24",
                                  "value": "tickLower"
                                },
                                "id": 1530,
                                "name": "Identifier",
                                "src": "20325:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1506,
                                  "type": "int24",
                                  "value": "tickUpper"
                                },
                                "id": 1531,
                                "name": "Identifier",
                                "src": "20367:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "int128",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "toInt128",
                                          "referencedDeclaration": 5125,
                                          "type": "function (int256) pure returns (int128)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint128",
                                                      "typeString": "uint128"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "int256"
                                                    },
                                                    "id": 1532,
                                                    "name": "ElementaryTypeName",
                                                    "src": "20415:6:1"
                                                  }
                                                ],
                                                "id": 1533,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "20415:6:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1508,
                                                  "type": "uint128",
                                                  "value": "amount"
                                                },
                                                "id": 1534,
                                                "name": "Identifier",
                                                "src": "20422:6:1"
                                              }
                                            ],
                                            "id": 1535,
                                            "name": "FunctionCall",
                                            "src": "20415:14:1"
                                          }
                                        ],
                                        "id": 1536,
                                        "name": "MemberAccess",
                                        "src": "20415:23:1"
                                      }
                                    ],
                                    "id": 1537,
                                    "name": "FunctionCall",
                                    "src": "20415:25:1"
                                  }
                                ],
                                "id": 1538,
                                "name": "UnaryOperation",
                                "src": "20414:26:1"
                              }
                            ],
                            "id": 1539,
                            "name": "FunctionCall",
                            "src": "20232:227:1"
                          }
                        ],
                        "id": 1540,
                        "name": "FunctionCall",
                        "src": "20199:274:1"
                      }
                    ],
                    "id": 1541,
                    "name": "VariableDeclarationStatement",
                    "src": "20114:359:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1514,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1542,
                            "name": "Identifier",
                            "src": "20484:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 1543,
                                    "name": "ElementaryTypeName",
                                    "src": "20494:7:1"
                                  }
                                ],
                                "id": 1544,
                                "name": "ElementaryTypeNameExpression",
                                "src": "20494:7:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1523,
                                      "type": "int256",
                                      "value": "amount0Int"
                                    },
                                    "id": 1545,
                                    "name": "Identifier",
                                    "src": "20503:10:1"
                                  }
                                ],
                                "id": 1546,
                                "name": "UnaryOperation",
                                "src": "20502:11:1"
                              }
                            ],
                            "id": 1547,
                            "name": "FunctionCall",
                            "src": "20494:20:1"
                          }
                        ],
                        "id": 1548,
                        "name": "Assignment",
                        "src": "20484:30:1"
                      }
                    ],
                    "id": 1549,
                    "name": "ExpressionStatement",
                    "src": "20484:30:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1516,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1550,
                            "name": "Identifier",
                            "src": "20524:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 1551,
                                    "name": "ElementaryTypeName",
                                    "src": "20534:7:1"
                                  }
                                ],
                                "id": 1552,
                                "name": "ElementaryTypeNameExpression",
                                "src": "20534:7:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1525,
                                      "type": "int256",
                                      "value": "amount1Int"
                                    },
                                    "id": 1553,
                                    "name": "Identifier",
                                    "src": "20543:10:1"
                                  }
                                ],
                                "id": 1554,
                                "name": "UnaryOperation",
                                "src": "20542:11:1"
                              }
                            ],
                            "id": 1555,
                            "name": "FunctionCall",
                            "src": "20534:20:1"
                          }
                        ],
                        "id": 1556,
                        "name": "Assignment",
                        "src": "20524:30:1"
                      }
                    ],
                    "id": 1557,
                    "name": "ExpressionStatement",
                    "src": "20524:30:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1514,
                                  "type": "uint256",
                                  "value": "amount0"
                                },
                                "id": 1558,
                                "name": "Identifier",
                                "src": "20569:7:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1559,
                                "name": "Literal",
                                "src": "20579:1:1"
                              }
                            ],
                            "id": 1560,
                            "name": "BinaryOperation",
                            "src": "20569:11:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1516,
                                  "type": "uint256",
                                  "value": "amount1"
                                },
                                "id": 1561,
                                "name": "Identifier",
                                "src": "20584:7:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1562,
                                "name": "Literal",
                                "src": "20594:1:1"
                              }
                            ],
                            "id": 1563,
                            "name": "BinaryOperation",
                            "src": "20584:11:1"
                          }
                        ],
                        "id": 1564,
                        "name": "BinaryOperation",
                        "src": "20569:26:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "tuple(uint128,uint128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "tokensOwed0",
                                          "referencedDeclaration": 4921,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1521,
                                              "type": "struct Position.Info storage pointer",
                                              "value": "position"
                                            },
                                            "id": 1565,
                                            "name": "Identifier",
                                            "src": "20612:8:1"
                                          }
                                        ],
                                        "id": 1567,
                                        "name": "MemberAccess",
                                        "src": "20612:20:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "tokensOwed1",
                                          "referencedDeclaration": 4923,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1521,
                                              "type": "struct Position.Info storage pointer",
                                              "value": "position"
                                            },
                                            "id": 1568,
                                            "name": "Identifier",
                                            "src": "20634:8:1"
                                          }
                                        ],
                                        "id": 1569,
                                        "name": "MemberAccess",
                                        "src": "20634:20:1"
                                      }
                                    ],
                                    "id": 1570,
                                    "name": "TupleExpression",
                                    "src": "20611:44:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "tuple(uint128,uint128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "+",
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "tokensOwed0",
                                              "referencedDeclaration": 4921,
                                              "type": "uint128"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1521,
                                                  "type": "struct Position.Info storage pointer",
                                                  "value": "position"
                                                },
                                                "id": 1571,
                                                "name": "Identifier",
                                                "src": "20676:8:1"
                                              }
                                            ],
                                            "id": 1572,
                                            "name": "MemberAccess",
                                            "src": "20676:20:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint128",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint128)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "uint128"
                                                    },
                                                    "id": 1573,
                                                    "name": "ElementaryTypeName",
                                                    "src": "20699:7:1"
                                                  }
                                                ],
                                                "id": 1574,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "20699:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1514,
                                                  "type": "uint256",
                                                  "value": "amount0"
                                                },
                                                "id": 1575,
                                                "name": "Identifier",
                                                "src": "20707:7:1"
                                              }
                                            ],
                                            "id": 1576,
                                            "name": "FunctionCall",
                                            "src": "20699:16:1"
                                          }
                                        ],
                                        "id": 1577,
                                        "name": "BinaryOperation",
                                        "src": "20676:39:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "+",
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "tokensOwed1",
                                              "referencedDeclaration": 4923,
                                              "type": "uint128"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1521,
                                                  "type": "struct Position.Info storage pointer",
                                                  "value": "position"
                                                },
                                                "id": 1578,
                                                "name": "Identifier",
                                                "src": "20733:8:1"
                                              }
                                            ],
                                            "id": 1579,
                                            "name": "MemberAccess",
                                            "src": "20733:20:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint128",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint128)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "uint128"
                                                    },
                                                    "id": 1580,
                                                    "name": "ElementaryTypeName",
                                                    "src": "20756:7:1"
                                                  }
                                                ],
                                                "id": 1581,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "20756:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1516,
                                                  "type": "uint256",
                                                  "value": "amount1"
                                                },
                                                "id": 1582,
                                                "name": "Identifier",
                                                "src": "20764:7:1"
                                              }
                                            ],
                                            "id": 1583,
                                            "name": "FunctionCall",
                                            "src": "20756:16:1"
                                          }
                                        ],
                                        "id": 1584,
                                        "name": "BinaryOperation",
                                        "src": "20733:39:1"
                                      }
                                    ],
                                    "id": 1585,
                                    "name": "TupleExpression",
                                    "src": "20658:128:1"
                                  }
                                ],
                                "id": 1586,
                                "name": "Assignment",
                                "src": "20611:175:1"
                              }
                            ],
                            "id": 1587,
                            "name": "ExpressionStatement",
                            "src": "20611:175:1"
                          }
                        ],
                        "id": 1588,
                        "name": "Block",
                        "src": "20597:200:1"
                      }
                    ],
                    "id": 1589,
                    "name": "IfStatement",
                    "src": "20565:232:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3285,
                              "type": "function (address,int24,int24,uint128,uint256,uint256)",
                              "value": "Burn"
                            },
                            "id": 1590,
                            "name": "Identifier",
                            "src": "20812:4:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1591,
                                "name": "Identifier",
                                "src": "20817:3:1"
                              }
                            ],
                            "id": 1592,
                            "name": "MemberAccess",
                            "src": "20817:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1504,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 1593,
                            "name": "Identifier",
                            "src": "20829:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1506,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 1594,
                            "name": "Identifier",
                            "src": "20840:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1508,
                              "type": "uint128",
                              "value": "amount"
                            },
                            "id": 1595,
                            "name": "Identifier",
                            "src": "20851:6:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1514,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 1596,
                            "name": "Identifier",
                            "src": "20859:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1516,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 1597,
                            "name": "Identifier",
                            "src": "20868:7:1"
                          }
                        ],
                        "id": 1598,
                        "name": "FunctionCall",
                        "src": "20812:64:1"
                      }
                    ],
                    "id": 1599,
                    "name": "EmitStatement",
                    "src": "20807:69:1"
                  }
                ],
                "id": 1600,
                "name": "Block",
                "src": "20104:779:1"
              }
            ],
            "id": 1601,
            "name": "FunctionDefinition",
            "src": "19944:939:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.SwapCache",
              "name": "SwapCache",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeProtocol",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 1602,
                    "name": "ElementaryTypeName",
                    "src": "20964:5:1"
                  }
                ],
                "id": 1603,
                "name": "VariableDeclaration",
                "src": "20964:17:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "liquidityStart",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 1604,
                    "name": "ElementaryTypeName",
                    "src": "21041:7:1"
                  }
                ],
                "id": 1605,
                "name": "VariableDeclaration",
                "src": "21041:22:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "blockTimestamp",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 1606,
                    "name": "ElementaryTypeName",
                    "src": "21119:6:1"
                  }
                ],
                "id": 1607,
                "name": "VariableDeclaration",
                "src": "21119:21:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tickCumulative",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int56",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int56",
                      "type": "int56"
                    },
                    "id": 1608,
                    "name": "ElementaryTypeName",
                    "src": "21250:5:1"
                  }
                ],
                "id": 1609,
                "name": "VariableDeclaration",
                "src": "21250:20:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityCumulativeX128",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 1610,
                    "name": "ElementaryTypeName",
                    "src": "21393:7:1"
                  }
                ],
                "id": 1611,
                "name": "VariableDeclaration",
                "src": "21393:41:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "computedLatestObservation",
                  "scope": 1614,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 1612,
                    "name": "ElementaryTypeName",
                    "src": "21516:4:1"
                  }
                ],
                "id": 1613,
                "name": "VariableDeclaration",
                "src": "21516:30:1"
              }
            ],
            "id": 1614,
            "name": "StructDefinition",
            "src": "20889:664:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.SwapState",
              "name": "SwapState",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amountSpecifiedRemaining",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int256",
                      "type": "int256"
                    },
                    "id": 1615,
                    "name": "ElementaryTypeName",
                    "src": "21761:6:1"
                  }
                ],
                "id": 1616,
                "name": "VariableDeclaration",
                "src": "21761:31:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amountCalculated",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int256",
                      "type": "int256"
                    },
                    "id": 1617,
                    "name": "ElementaryTypeName",
                    "src": "21873:6:1"
                  }
                ],
                "id": 1618,
                "name": "VariableDeclaration",
                "src": "21873:23:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 1619,
                    "name": "ElementaryTypeName",
                    "src": "21937:7:1"
                  }
                ],
                "id": 1620,
                "name": "VariableDeclaration",
                "src": "21937:20:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tick",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int24",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 1621,
                    "name": "ElementaryTypeName",
                    "src": "22021:5:1"
                  }
                ],
                "id": 1622,
                "name": "VariableDeclaration",
                "src": "22021:10:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobalX128",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 1623,
                    "name": "ElementaryTypeName",
                    "src": "22093:7:1"
                  }
                ],
                "id": 1624,
                "name": "VariableDeclaration",
                "src": "22093:27:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "protocolFee",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 1625,
                    "name": "ElementaryTypeName",
                    "src": "22184:7:1"
                  }
                ],
                "id": 1626,
                "name": "VariableDeclaration",
                "src": "22184:19:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "scope": 1629,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 1627,
                    "name": "ElementaryTypeName",
                    "src": "22255:7:1"
                  }
                ],
                "id": 1628,
                "name": "VariableDeclaration",
                "src": "22255:17:1"
              }
            ],
            "id": 1629,
            "name": "StructDefinition",
            "src": "21655:624:1"
          },
          {
            "attributes": {
              "canonicalName": "MoonwalkerPool.StepComputations",
              "name": "StepComputations",
              "scope": 2754,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceStartX96",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 1630,
                    "name": "ElementaryTypeName",
                    "src": "22369:7:1"
                  }
                ],
                "id": 1631,
                "name": "VariableDeclaration",
                "src": "22369:25:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tickNext",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int24",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int24",
                      "type": "int24"
                    },
                    "id": 1632,
                    "name": "ElementaryTypeName",
                    "src": "22484:5:1"
                  }
                ],
                "id": 1633,
                "name": "VariableDeclaration",
                "src": "22484:14:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "initialized",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 1634,
                    "name": "ElementaryTypeName",
                    "src": "22558:4:1"
                  }
                ],
                "id": 1635,
                "name": "VariableDeclaration",
                "src": "22558:16:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceNextX96",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 1636,
                    "name": "ElementaryTypeName",
                    "src": "22631:7:1"
                  }
                ],
                "id": 1637,
                "name": "VariableDeclaration",
                "src": "22631:24:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 1638,
                    "name": "ElementaryTypeName",
                    "src": "22718:7:1"
                  }
                ],
                "id": 1639,
                "name": "VariableDeclaration",
                "src": "22718:16:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 1640,
                    "name": "ElementaryTypeName",
                    "src": "22785:7:1"
                  }
                ],
                "id": 1641,
                "name": "VariableDeclaration",
                "src": "22785:17:1"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeAmount",
                  "scope": 1644,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 1642,
                    "name": "ElementaryTypeName",
                    "src": "22853:7:1"
                  }
                ],
                "id": 1643,
                "name": "VariableDeclaration",
                "src": "22853:17:1"
              }
            ],
            "id": 1644,
            "name": "StructDefinition",
            "src": "22285:592:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3178
              ],
              "functionSelector": "128acb08",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "swap",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions"
                },
                "id": 1645,
                "name": "StructuredDocumentation",
                "src": "22883:38:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 1657,
                "name": "OverrideSpecifier",
                "src": "23103:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "recipient",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1646,
                        "name": "ElementaryTypeName",
                        "src": "22949:7:1"
                      }
                    ],
                    "id": 1647,
                    "name": "VariableDeclaration",
                    "src": "22949:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "zeroForOne",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1648,
                        "name": "ElementaryTypeName",
                        "src": "22976:4:1"
                      }
                    ],
                    "id": 1649,
                    "name": "VariableDeclaration",
                    "src": "22976:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountSpecified",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 1650,
                        "name": "ElementaryTypeName",
                        "src": "23001:6:1"
                      }
                    ],
                    "id": 1651,
                    "name": "VariableDeclaration",
                    "src": "23001:22:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceLimitX96",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 1652,
                        "name": "ElementaryTypeName",
                        "src": "23033:7:1"
                      }
                    ],
                    "id": 1653,
                    "name": "VariableDeclaration",
                    "src": "23033:25:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1654,
                        "name": "ElementaryTypeName",
                        "src": "23068:5:1"
                      }
                    ],
                    "id": 1655,
                    "name": "VariableDeclaration",
                    "src": "23068:19:1"
                  }
                ],
                "id": 1656,
                "name": "ParameterList",
                "src": "22939:154:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 1660,
                        "name": "ElementaryTypeName",
                        "src": "23136:6:1"
                      }
                    ],
                    "id": 1661,
                    "name": "VariableDeclaration",
                    "src": "23136:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 2333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 1662,
                        "name": "ElementaryTypeName",
                        "src": "23152:6:1"
                      }
                    ],
                    "id": 1663,
                    "name": "VariableDeclaration",
                    "src": "23152:14:1"
                  }
                ],
                "id": 1664,
                "name": "ParameterList",
                "src": "23135:32:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 1658,
                    "name": "Identifier",
                    "src": "23112:14:1"
                  }
                ],
                "id": 1659,
                "name": "ModifierInvocation",
                "src": "23112:14:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5",
                                  "typeString": "literal_string \"AS\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1665,
                            "name": "Identifier",
                            "src": "23178:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1651,
                                  "type": "int256",
                                  "value": "amountSpecified"
                                },
                                "id": 1666,
                                "name": "Identifier",
                                "src": "23186:15:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1667,
                                "name": "Literal",
                                "src": "23205:1:1"
                              }
                            ],
                            "id": 1668,
                            "name": "BinaryOperation",
                            "src": "23186:20:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4153",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"AS\"",
                              "value": "AS"
                            },
                            "id": 1669,
                            "name": "Literal",
                            "src": "23208:4:1"
                          }
                        ],
                        "id": 1670,
                        "name": "FunctionCall",
                        "src": "23178:35:1"
                      }
                    ],
                    "id": 1671,
                    "name": "ExpressionStatement",
                    "src": "23178:35:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1673
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "slot0Start",
                          "scope": 2332,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct MoonwalkerPool.Slot0",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Slot0",
                              "referencedDeclaration": 375,
                              "type": "struct MoonwalkerPool.Slot0"
                            },
                            "id": 1672,
                            "name": "UserDefinedTypeName",
                            "src": "23224:5:1"
                          }
                        ],
                        "id": 1673,
                        "name": "VariableDeclaration",
                        "src": "23224:23:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 379,
                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                          "value": "slot0"
                        },
                        "id": 1674,
                        "name": "Identifier",
                        "src": "23250:5:1"
                      }
                    ],
                    "id": 1675,
                    "name": "VariableDeclarationStatement",
                    "src": "23224:31:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529",
                                  "typeString": "literal_string \"LOK\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1676,
                            "name": "Identifier",
                            "src": "23266:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1673,
                                  "type": "struct MoonwalkerPool.Slot0 memory",
                                  "value": "slot0Start"
                                },
                                "id": 1677,
                                "name": "Identifier",
                                "src": "23274:10:1"
                              }
                            ],
                            "id": 1678,
                            "name": "MemberAccess",
                            "src": "23274:19:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4c4f4b",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"LOK\"",
                              "value": "LOK"
                            },
                            "id": 1679,
                            "name": "Literal",
                            "src": "23295:5:1"
                          }
                        ],
                        "id": 1680,
                        "name": "FunctionCall",
                        "src": "23266:35:1"
                      }
                    ],
                    "id": 1681,
                    "name": "ExpressionStatement",
                    "src": "23266:35:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094",
                                  "typeString": "literal_string \"SPL\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1682,
                            "name": "Identifier",
                            "src": "23311:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1649,
                                  "type": "bool",
                                  "value": "zeroForOne"
                                },
                                "id": 1683,
                                "name": "Identifier",
                                "src": "23332:10:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&&",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1653,
                                          "type": "uint160",
                                          "value": "sqrtPriceLimitX96"
                                        },
                                        "id": 1684,
                                        "name": "Identifier",
                                        "src": "23361:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 362,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1673,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "slot0Start"
                                            },
                                            "id": 1685,
                                            "name": "Identifier",
                                            "src": "23381:10:1"
                                          }
                                        ],
                                        "id": 1686,
                                        "name": "MemberAccess",
                                        "src": "23381:23:1"
                                      }
                                    ],
                                    "id": 1687,
                                    "name": "BinaryOperation",
                                    "src": "23361:43:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1653,
                                          "type": "uint160",
                                          "value": "sqrtPriceLimitX96"
                                        },
                                        "id": 1688,
                                        "name": "Identifier",
                                        "src": "23408:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "MIN_SQRT_RATIO",
                                          "referencedDeclaration": 6652,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7170,
                                              "type": "type(library TickMath)",
                                              "value": "TickMath"
                                            },
                                            "id": 1689,
                                            "name": "Identifier",
                                            "src": "23428:8:1"
                                          }
                                        ],
                                        "id": 1690,
                                        "name": "MemberAccess",
                                        "src": "23428:23:1"
                                      }
                                    ],
                                    "id": 1691,
                                    "name": "BinaryOperation",
                                    "src": "23408:43:1"
                                  }
                                ],
                                "id": 1692,
                                "name": "BinaryOperation",
                                "src": "23361:90:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&&",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1653,
                                          "type": "uint160",
                                          "value": "sqrtPriceLimitX96"
                                        },
                                        "id": 1693,
                                        "name": "Identifier",
                                        "src": "23470:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 362,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1673,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "slot0Start"
                                            },
                                            "id": 1694,
                                            "name": "Identifier",
                                            "src": "23490:10:1"
                                          }
                                        ],
                                        "id": 1695,
                                        "name": "MemberAccess",
                                        "src": "23490:23:1"
                                      }
                                    ],
                                    "id": 1696,
                                    "name": "BinaryOperation",
                                    "src": "23470:43:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1653,
                                          "type": "uint160",
                                          "value": "sqrtPriceLimitX96"
                                        },
                                        "id": 1697,
                                        "name": "Identifier",
                                        "src": "23517:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "MAX_SQRT_RATIO",
                                          "referencedDeclaration": 6656,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7170,
                                              "type": "type(library TickMath)",
                                              "value": "TickMath"
                                            },
                                            "id": 1698,
                                            "name": "Identifier",
                                            "src": "23537:8:1"
                                          }
                                        ],
                                        "id": 1699,
                                        "name": "MemberAccess",
                                        "src": "23537:23:1"
                                      }
                                    ],
                                    "id": 1700,
                                    "name": "BinaryOperation",
                                    "src": "23517:43:1"
                                  }
                                ],
                                "id": 1701,
                                "name": "BinaryOperation",
                                "src": "23470:90:1"
                              }
                            ],
                            "id": 1702,
                            "name": "Conditional",
                            "src": "23332:228:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "53504c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"SPL\"",
                              "value": "SPL"
                            },
                            "id": 1703,
                            "name": "Literal",
                            "src": "23574:5:1"
                          }
                        ],
                        "id": 1704,
                        "name": "FunctionCall",
                        "src": "23311:278:1"
                      }
                    ],
                    "id": 1705,
                    "name": "ExpressionStatement",
                    "src": "23311:278:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 1706,
                                "name": "Identifier",
                                "src": "23600:5:1"
                              }
                            ],
                            "id": 1708,
                            "name": "MemberAccess",
                            "src": "23600:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 1709,
                            "name": "Literal",
                            "src": "23617:5:1"
                          }
                        ],
                        "id": 1710,
                        "name": "Assignment",
                        "src": "23600:22:1"
                      }
                    ],
                    "id": 1711,
                    "name": "ExpressionStatement",
                    "src": "23600:22:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1713
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "cache",
                          "scope": 2332,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct MoonwalkerPool.SwapCache",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "SwapCache",
                              "referencedDeclaration": 1614,
                              "type": "struct MoonwalkerPool.SwapCache"
                            },
                            "id": 1712,
                            "name": "UserDefinedTypeName",
                            "src": "23633:9:1"
                          }
                        ],
                        "id": 1713,
                        "name": "VariableDeclaration",
                        "src": "23633:22:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "liquidityStart",
                            "blockTimestamp",
                            "feeProtocol",
                            "secondsPerLiquidityCumulativeX128",
                            "tickCumulative",
                            "computedLatestObservation"
                          ],
                          "tryCall": false,
                          "type": "struct MoonwalkerPool.SwapCache memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1614,
                              "type": "type(struct MoonwalkerPool.SwapCache storage pointer)",
                              "value": "SwapCache"
                            },
                            "id": 1714,
                            "name": "Identifier",
                            "src": "23670:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 400,
                              "type": "uint128",
                              "value": "liquidity"
                            },
                            "id": 1715,
                            "name": "Identifier",
                            "src": "23714:9:1"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 540,
                                  "type": "function () view returns (uint32)",
                                  "value": "_blockTimestamp"
                                },
                                "id": 1716,
                                "name": "Identifier",
                                "src": "23757:15:1"
                              }
                            ],
                            "id": 1717,
                            "name": "FunctionCall",
                            "src": "23757:17:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1649,
                                  "type": "bool",
                                  "value": "zeroForOne"
                                },
                                "id": 1718,
                                "name": "Identifier",
                                "src": "23805:10:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "%",
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeProtocol",
                                          "referencedDeclaration": 372,
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1673,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "slot0Start"
                                            },
                                            "id": 1719,
                                            "name": "Identifier",
                                            "src": "23819:10:1"
                                          }
                                        ],
                                        "id": 1720,
                                        "name": "MemberAccess",
                                        "src": "23819:22:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "3136",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 16",
                                          "value": "16"
                                        },
                                        "id": 1721,
                                        "name": "Literal",
                                        "src": "23844:2:1"
                                      }
                                    ],
                                    "id": 1722,
                                    "name": "BinaryOperation",
                                    "src": "23819:27:1"
                                  }
                                ],
                                "id": 1723,
                                "name": "TupleExpression",
                                "src": "23818:29:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">>",
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeProtocol",
                                          "referencedDeclaration": 372,
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1673,
                                              "type": "struct MoonwalkerPool.Slot0 memory",
                                              "value": "slot0Start"
                                            },
                                            "id": 1724,
                                            "name": "Identifier",
                                            "src": "23851:10:1"
                                          }
                                        ],
                                        "id": 1725,
                                        "name": "MemberAccess",
                                        "src": "23851:22:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "34",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 4",
                                          "value": "4"
                                        },
                                        "id": 1726,
                                        "name": "Literal",
                                        "src": "23877:1:1"
                                      }
                                    ],
                                    "id": 1727,
                                    "name": "BinaryOperation",
                                    "src": "23851:27:1"
                                  }
                                ],
                                "id": 1728,
                                "name": "TupleExpression",
                                "src": "23850:29:1"
                              }
                            ],
                            "id": 1729,
                            "name": "Conditional",
                            "src": "23805:74:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1730,
                            "name": "Literal",
                            "src": "23932:1:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1731,
                            "name": "Literal",
                            "src": "23967:1:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 1732,
                            "name": "Literal",
                            "src": "24013:5:1"
                          }
                        ],
                        "id": 1733,
                        "name": "FunctionCall",
                        "src": "23670:363:1"
                      }
                    ],
                    "id": 1734,
                    "name": "VariableDeclarationStatement",
                    "src": "23633:400:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1736
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exactInput",
                          "scope": 2332,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 1735,
                            "name": "ElementaryTypeName",
                            "src": "24044:4:1"
                          }
                        ],
                        "id": 1736,
                        "name": "VariableDeclaration",
                        "src": "24044:15:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1651,
                              "type": "int256",
                              "value": "amountSpecified"
                            },
                            "id": 1737,
                            "name": "Identifier",
                            "src": "24062:15:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1738,
                            "name": "Literal",
                            "src": "24080:1:1"
                          }
                        ],
                        "id": 1739,
                        "name": "BinaryOperation",
                        "src": "24062:19:1"
                      }
                    ],
                    "id": 1740,
                    "name": "VariableDeclarationStatement",
                    "src": "24044:37:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1742
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "state",
                          "scope": 2332,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct MoonwalkerPool.SwapState",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "SwapState",
                              "referencedDeclaration": 1629,
                              "type": "struct MoonwalkerPool.SwapState"
                            },
                            "id": 1741,
                            "name": "UserDefinedTypeName",
                            "src": "24092:9:1"
                          }
                        ],
                        "id": 1742,
                        "name": "VariableDeclaration",
                        "src": "24092:22:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "amountSpecifiedRemaining",
                            "amountCalculated",
                            "sqrtPriceX96",
                            "tick",
                            "feeGrowthGlobalX128",
                            "protocolFee",
                            "liquidity"
                          ],
                          "tryCall": false,
                          "type": "struct MoonwalkerPool.SwapState memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1629,
                              "type": "type(struct MoonwalkerPool.SwapState storage pointer)",
                              "value": "SwapState"
                            },
                            "id": 1743,
                            "name": "Identifier",
                            "src": "24129:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1651,
                              "type": "int256",
                              "value": "amountSpecified"
                            },
                            "id": 1744,
                            "name": "Identifier",
                            "src": "24183:15:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1745,
                            "name": "Literal",
                            "src": "24234:1:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sqrtPriceX96",
                              "referencedDeclaration": 362,
                              "type": "uint160"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1673,
                                  "type": "struct MoonwalkerPool.Slot0 memory",
                                  "value": "slot0Start"
                                },
                                "id": 1746,
                                "name": "Identifier",
                                "src": "24267:10:1"
                              }
                            ],
                            "id": 1747,
                            "name": "MemberAccess",
                            "src": "24267:23:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 364,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1673,
                                  "type": "struct MoonwalkerPool.Slot0 memory",
                                  "value": "slot0Start"
                                },
                                "id": 1748,
                                "name": "Identifier",
                                "src": "24314:10:1"
                              }
                            ],
                            "id": 1749,
                            "name": "MemberAccess",
                            "src": "24314:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1649,
                                  "type": "bool",
                                  "value": "zeroForOne"
                                },
                                "id": 1750,
                                "name": "Identifier",
                                "src": "24368:10:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 383,
                                  "type": "uint256",
                                  "value": "feeGrowthGlobal0X128"
                                },
                                "id": 1751,
                                "name": "Identifier",
                                "src": "24381:20:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 387,
                                  "type": "uint256",
                                  "value": "feeGrowthGlobal1X128"
                                },
                                "id": 1752,
                                "name": "Identifier",
                                "src": "24404:20:1"
                              }
                            ],
                            "id": 1753,
                            "name": "Conditional",
                            "src": "24368:56:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1754,
                            "name": "Literal",
                            "src": "24455:1:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidityStart",
                              "referencedDeclaration": 1605,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1713,
                                  "type": "struct MoonwalkerPool.SwapCache memory",
                                  "value": "cache"
                                },
                                "id": 1755,
                                "name": "Identifier",
                                "src": "24485:5:1"
                              }
                            ],
                            "id": 1756,
                            "name": "MemberAccess",
                            "src": "24485:20:1"
                          }
                        ],
                        "id": 1757,
                        "name": "FunctionCall",
                        "src": "24129:391:1"
                      }
                    ],
                    "id": 1758,
                    "name": "VariableDeclarationStatement",
                    "src": "24092:428:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "amountSpecifiedRemaining",
                                  "referencedDeclaration": 1616,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1742,
                                      "type": "struct MoonwalkerPool.SwapState memory",
                                      "value": "state"
                                    },
                                    "id": 1759,
                                    "name": "Identifier",
                                    "src": "24654:5:1"
                                  }
                                ],
                                "id": 1760,
                                "name": "MemberAccess",
                                "src": "24654:30:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1761,
                                "name": "Literal",
                                "src": "24688:1:1"
                              }
                            ],
                            "id": 1762,
                            "name": "BinaryOperation",
                            "src": "24654:35:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sqrtPriceX96",
                                  "referencedDeclaration": 1620,
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1742,
                                      "type": "struct MoonwalkerPool.SwapState memory",
                                      "value": "state"
                                    },
                                    "id": 1763,
                                    "name": "Identifier",
                                    "src": "24693:5:1"
                                  }
                                ],
                                "id": 1764,
                                "name": "MemberAccess",
                                "src": "24693:18:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1653,
                                  "type": "uint160",
                                  "value": "sqrtPriceLimitX96"
                                },
                                "id": 1765,
                                "name": "Identifier",
                                "src": "24715:17:1"
                              }
                            ],
                            "id": 1766,
                            "name": "BinaryOperation",
                            "src": "24693:39:1"
                          }
                        ],
                        "id": 1767,
                        "name": "BinaryOperation",
                        "src": "24654:78:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                1769
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "step",
                                  "scope": 2090,
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "type": "struct MoonwalkerPool.StepComputations",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "StepComputations",
                                      "referencedDeclaration": 1644,
                                      "type": "struct MoonwalkerPool.StepComputations"
                                    },
                                    "id": 1768,
                                    "name": "UserDefinedTypeName",
                                    "src": "24748:16:1"
                                  }
                                ],
                                "id": 1769,
                                "name": "VariableDeclaration",
                                "src": "24748:28:1"
                              }
                            ],
                            "id": 1770,
                            "name": "VariableDeclarationStatement",
                            "src": "24748:28:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "sqrtPriceStartX96",
                                      "referencedDeclaration": 1631,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1769,
                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                          "value": "step"
                                        },
                                        "id": 1771,
                                        "name": "Identifier",
                                        "src": "24791:4:1"
                                      }
                                    ],
                                    "id": 1773,
                                    "name": "MemberAccess",
                                    "src": "24791:22:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sqrtPriceX96",
                                      "referencedDeclaration": 1620,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 1774,
                                        "name": "Identifier",
                                        "src": "24816:5:1"
                                      }
                                    ],
                                    "id": 1775,
                                    "name": "MemberAccess",
                                    "src": "24816:18:1"
                                  }
                                ],
                                "id": 1776,
                                "name": "Assignment",
                                "src": "24791:43:1"
                              }
                            ],
                            "id": 1777,
                            "name": "ExpressionStatement",
                            "src": "24791:43:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "tuple(int24,bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "tickNext",
                                          "referencedDeclaration": 1633,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1778,
                                            "name": "Identifier",
                                            "src": "24850:4:1"
                                          }
                                        ],
                                        "id": 1780,
                                        "name": "MemberAccess",
                                        "src": "24850:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "initialized",
                                          "referencedDeclaration": 1635,
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1781,
                                            "name": "Identifier",
                                            "src": "24865:4:1"
                                          }
                                        ],
                                        "id": 1782,
                                        "name": "MemberAccess",
                                        "src": "24865:16:1"
                                      }
                                    ],
                                    "id": 1783,
                                    "name": "TupleExpression",
                                    "src": "24849:33:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple(int24,bool)",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "nextInitializedTickWithinOneWord",
                                          "referencedDeclaration": 6634,
                                          "type": "function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 412,
                                              "type": "mapping(int16 => uint256)",
                                              "value": "tickBitmap"
                                            },
                                            "id": 1784,
                                            "name": "Identifier",
                                            "src": "24885:10:1"
                                          }
                                        ],
                                        "id": 1785,
                                        "name": "MemberAccess",
                                        "src": "24885:43:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tick",
                                          "referencedDeclaration": 1622,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1786,
                                            "name": "Identifier",
                                            "src": "24946:5:1"
                                          }
                                        ],
                                        "id": 1787,
                                        "name": "MemberAccess",
                                        "src": "24946:10:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 356,
                                          "type": "int24",
                                          "value": "tickSpacing"
                                        },
                                        "id": 1788,
                                        "name": "Identifier",
                                        "src": "24974:11:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1649,
                                          "type": "bool",
                                          "value": "zeroForOne"
                                        },
                                        "id": 1789,
                                        "name": "Identifier",
                                        "src": "25003:10:1"
                                      }
                                    ],
                                    "id": 1790,
                                    "name": "FunctionCall",
                                    "src": "24885:142:1"
                                  }
                                ],
                                "id": 1791,
                                "name": "Assignment",
                                "src": "24849:178:1"
                              }
                            ],
                            "id": 1792,
                            "name": "ExpressionStatement",
                            "src": "24849:178:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tickNext",
                                      "referencedDeclaration": 1633,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1769,
                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                          "value": "step"
                                        },
                                        "id": 1793,
                                        "name": "Identifier",
                                        "src": "25159:4:1"
                                      }
                                    ],
                                    "id": 1794,
                                    "name": "MemberAccess",
                                    "src": "25159:13:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "MIN_TICK",
                                      "referencedDeclaration": 6643,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7170,
                                          "type": "type(library TickMath)",
                                          "value": "TickMath"
                                        },
                                        "id": 1795,
                                        "name": "Identifier",
                                        "src": "25175:8:1"
                                      }
                                    ],
                                    "id": 1796,
                                    "name": "MemberAccess",
                                    "src": "25175:17:1"
                                  }
                                ],
                                "id": 1797,
                                "name": "BinaryOperation",
                                "src": "25159:33:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "tickNext",
                                              "referencedDeclaration": 1633,
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1769,
                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                  "value": "step"
                                                },
                                                "id": 1798,
                                                "name": "Identifier",
                                                "src": "25212:4:1"
                                              }
                                            ],
                                            "id": 1800,
                                            "name": "MemberAccess",
                                            "src": "25212:13:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "MIN_TICK",
                                              "referencedDeclaration": 6643,
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 7170,
                                                  "type": "type(library TickMath)",
                                                  "value": "TickMath"
                                                },
                                                "id": 1801,
                                                "name": "Identifier",
                                                "src": "25228:8:1"
                                              }
                                            ],
                                            "id": 1802,
                                            "name": "MemberAccess",
                                            "src": "25228:17:1"
                                          }
                                        ],
                                        "id": 1803,
                                        "name": "Assignment",
                                        "src": "25212:33:1"
                                      }
                                    ],
                                    "id": 1804,
                                    "name": "ExpressionStatement",
                                    "src": "25212:33:1"
                                  }
                                ],
                                "id": 1805,
                                "name": "Block",
                                "src": "25194:66:1"
                              },
                              {
                                "attributes": {},
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tickNext",
                                          "referencedDeclaration": 1633,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1806,
                                            "name": "Identifier",
                                            "src": "25270:4:1"
                                          }
                                        ],
                                        "id": 1807,
                                        "name": "MemberAccess",
                                        "src": "25270:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "MAX_TICK",
                                          "referencedDeclaration": 6648,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7170,
                                              "type": "type(library TickMath)",
                                              "value": "TickMath"
                                            },
                                            "id": 1808,
                                            "name": "Identifier",
                                            "src": "25286:8:1"
                                          }
                                        ],
                                        "id": 1809,
                                        "name": "MemberAccess",
                                        "src": "25286:17:1"
                                      }
                                    ],
                                    "id": 1810,
                                    "name": "BinaryOperation",
                                    "src": "25270:33:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "member_name": "tickNext",
                                                  "referencedDeclaration": 1633,
                                                  "type": "int24"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1769,
                                                      "type": "struct MoonwalkerPool.StepComputations memory",
                                                      "value": "step"
                                                    },
                                                    "id": 1811,
                                                    "name": "Identifier",
                                                    "src": "25323:4:1"
                                                  }
                                                ],
                                                "id": 1813,
                                                "name": "MemberAccess",
                                                "src": "25323:13:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "MAX_TICK",
                                                  "referencedDeclaration": 6648,
                                                  "type": "int24"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 7170,
                                                      "type": "type(library TickMath)",
                                                      "value": "TickMath"
                                                    },
                                                    "id": 1814,
                                                    "name": "Identifier",
                                                    "src": "25339:8:1"
                                                  }
                                                ],
                                                "id": 1815,
                                                "name": "MemberAccess",
                                                "src": "25339:17:1"
                                              }
                                            ],
                                            "id": 1816,
                                            "name": "Assignment",
                                            "src": "25323:33:1"
                                          }
                                        ],
                                        "id": 1817,
                                        "name": "ExpressionStatement",
                                        "src": "25323:33:1"
                                      }
                                    ],
                                    "id": 1818,
                                    "name": "Block",
                                    "src": "25305:66:1"
                                  }
                                ],
                                "id": 1819,
                                "name": "IfStatement",
                                "src": "25266:105:1"
                              }
                            ],
                            "id": 1820,
                            "name": "IfStatement",
                            "src": "25155:216:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "sqrtPriceNextX96",
                                      "referencedDeclaration": 1637,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1769,
                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                          "value": "step"
                                        },
                                        "id": 1821,
                                        "name": "Identifier",
                                        "src": "25432:4:1"
                                      }
                                    ],
                                    "id": 1823,
                                    "name": "MemberAccess",
                                    "src": "25432:21:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint160",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "getSqrtRatioAtTick",
                                          "referencedDeclaration": 7030,
                                          "type": "function (int24) pure returns (uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7170,
                                              "type": "type(library TickMath)",
                                              "value": "TickMath"
                                            },
                                            "id": 1824,
                                            "name": "Identifier",
                                            "src": "25456:8:1"
                                          }
                                        ],
                                        "id": 1825,
                                        "name": "MemberAccess",
                                        "src": "25456:27:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tickNext",
                                          "referencedDeclaration": 1633,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1826,
                                            "name": "Identifier",
                                            "src": "25484:4:1"
                                          }
                                        ],
                                        "id": 1827,
                                        "name": "MemberAccess",
                                        "src": "25484:13:1"
                                      }
                                    ],
                                    "id": 1828,
                                    "name": "FunctionCall",
                                    "src": "25456:42:1"
                                  }
                                ],
                                "id": 1829,
                                "name": "Assignment",
                                "src": "25432:66:1"
                              }
                            ],
                            "id": 1830,
                            "name": "ExpressionStatement",
                            "src": "25432:66:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "tuple(uint160,uint256,uint256,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 1620,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1831,
                                            "name": "Identifier",
                                            "src": "25633:5:1"
                                          }
                                        ],
                                        "id": 1833,
                                        "name": "MemberAccess",
                                        "src": "25633:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "amountIn",
                                          "referencedDeclaration": 1639,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1834,
                                            "name": "Identifier",
                                            "src": "25653:4:1"
                                          }
                                        ],
                                        "id": 1835,
                                        "name": "MemberAccess",
                                        "src": "25653:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "amountOut",
                                          "referencedDeclaration": 1641,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1836,
                                            "name": "Identifier",
                                            "src": "25668:4:1"
                                          }
                                        ],
                                        "id": 1837,
                                        "name": "MemberAccess",
                                        "src": "25668:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "feeAmount",
                                          "referencedDeclaration": 1643,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1838,
                                            "name": "Identifier",
                                            "src": "25684:4:1"
                                          }
                                        ],
                                        "id": 1839,
                                        "name": "MemberAccess",
                                        "src": "25684:14:1"
                                      }
                                    ],
                                    "id": 1840,
                                    "name": "TupleExpression",
                                    "src": "25632:67:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple(uint160,uint256,uint256,uint256)",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            },
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            },
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint24",
                                              "typeString": "uint24"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "computeSwapStep",
                                          "referencedDeclaration": 5926,
                                          "type": "function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5927,
                                              "type": "type(library SwapMath)",
                                              "value": "SwapMath"
                                            },
                                            "id": 1841,
                                            "name": "Identifier",
                                            "src": "25702:8:1"
                                          }
                                        ],
                                        "id": 1842,
                                        "name": "MemberAccess",
                                        "src": "25702:24:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 1620,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1843,
                                            "name": "Identifier",
                                            "src": "25744:5:1"
                                          }
                                        ],
                                        "id": 1844,
                                        "name": "MemberAccess",
                                        "src": "25744:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1649,
                                                      "type": "bool",
                                                      "value": "zeroForOne"
                                                    },
                                                    "id": 1845,
                                                    "name": "Identifier",
                                                    "src": "25781:10:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "<",
                                                      "type": "bool"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "sqrtPriceNextX96",
                                                          "referencedDeclaration": 1637,
                                                          "type": "uint160"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1769,
                                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                                              "value": "step"
                                                            },
                                                            "id": 1846,
                                                            "name": "Identifier",
                                                            "src": "25794:4:1"
                                                          }
                                                        ],
                                                        "id": 1847,
                                                        "name": "MemberAccess",
                                                        "src": "25794:21:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1653,
                                                          "type": "uint160",
                                                          "value": "sqrtPriceLimitX96"
                                                        },
                                                        "id": 1848,
                                                        "name": "Identifier",
                                                        "src": "25818:17:1"
                                                      }
                                                    ],
                                                    "id": 1849,
                                                    "name": "BinaryOperation",
                                                    "src": "25794:41:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": ">",
                                                      "type": "bool"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "sqrtPriceNextX96",
                                                          "referencedDeclaration": 1637,
                                                          "type": "uint160"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1769,
                                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                                              "value": "step"
                                                            },
                                                            "id": 1850,
                                                            "name": "Identifier",
                                                            "src": "25838:4:1"
                                                          }
                                                        ],
                                                        "id": 1851,
                                                        "name": "MemberAccess",
                                                        "src": "25838:21:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1653,
                                                          "type": "uint160",
                                                          "value": "sqrtPriceLimitX96"
                                                        },
                                                        "id": 1852,
                                                        "name": "Identifier",
                                                        "src": "25862:17:1"
                                                      }
                                                    ],
                                                    "id": 1853,
                                                    "name": "BinaryOperation",
                                                    "src": "25838:41:1"
                                                  }
                                                ],
                                                "id": 1854,
                                                "name": "Conditional",
                                                "src": "25781:98:1"
                                              }
                                            ],
                                            "id": 1855,
                                            "name": "TupleExpression",
                                            "src": "25780:100:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1653,
                                              "type": "uint160",
                                              "value": "sqrtPriceLimitX96"
                                            },
                                            "id": 1856,
                                            "name": "Identifier",
                                            "src": "25903:17:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sqrtPriceNextX96",
                                              "referencedDeclaration": 1637,
                                              "type": "uint160"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1769,
                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                  "value": "step"
                                                },
                                                "id": 1857,
                                                "name": "Identifier",
                                                "src": "25943:4:1"
                                              }
                                            ],
                                            "id": 1858,
                                            "name": "MemberAccess",
                                            "src": "25943:21:1"
                                          }
                                        ],
                                        "id": 1859,
                                        "name": "Conditional",
                                        "src": "25780:184:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "liquidity",
                                          "referencedDeclaration": 1628,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1860,
                                            "name": "Identifier",
                                            "src": "25982:5:1"
                                          }
                                        ],
                                        "id": 1861,
                                        "name": "MemberAccess",
                                        "src": "25982:15:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "amountSpecifiedRemaining",
                                          "referencedDeclaration": 1616,
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1862,
                                            "name": "Identifier",
                                            "src": "26015:5:1"
                                          }
                                        ],
                                        "id": 1863,
                                        "name": "MemberAccess",
                                        "src": "26015:30:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 352,
                                          "type": "uint24",
                                          "value": "fee"
                                        },
                                        "id": 1864,
                                        "name": "Identifier",
                                        "src": "26063:3:1"
                                      }
                                    ],
                                    "id": 1865,
                                    "name": "FunctionCall",
                                    "src": "25702:378:1"
                                  }
                                ],
                                "id": 1866,
                                "name": "Assignment",
                                "src": "25632:448:1"
                              }
                            ],
                            "id": 1867,
                            "name": "ExpressionStatement",
                            "src": "25632:448:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1736,
                                  "type": "bool",
                                  "value": "exactInput"
                                },
                                "id": 1868,
                                "name": "Identifier",
                                "src": "26099:10:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "amountSpecifiedRemaining",
                                              "referencedDeclaration": 1616,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1869,
                                                "name": "Identifier",
                                                "src": "26129:5:1"
                                              }
                                            ],
                                            "id": 1871,
                                            "name": "MemberAccess",
                                            "src": "26129:30:1"
                                          },
                                          {
                                            "attributes": {
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "toInt256",
                                                  "referencedDeclaration": 5149,
                                                  "type": "function (uint256) pure returns (int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "+",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "amountIn",
                                                              "referencedDeclaration": 1639,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1769,
                                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                                  "value": "step"
                                                                },
                                                                "id": 1872,
                                                                "name": "Identifier",
                                                                "src": "26164:4:1"
                                                              }
                                                            ],
                                                            "id": 1873,
                                                            "name": "MemberAccess",
                                                            "src": "26164:13:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "feeAmount",
                                                              "referencedDeclaration": 1643,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1769,
                                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                                  "value": "step"
                                                                },
                                                                "id": 1874,
                                                                "name": "Identifier",
                                                                "src": "26180:4:1"
                                                              }
                                                            ],
                                                            "id": 1875,
                                                            "name": "MemberAccess",
                                                            "src": "26180:14:1"
                                                          }
                                                        ],
                                                        "id": 1876,
                                                        "name": "BinaryOperation",
                                                        "src": "26164:30:1"
                                                      }
                                                    ],
                                                    "id": 1877,
                                                    "name": "TupleExpression",
                                                    "src": "26163:32:1"
                                                  }
                                                ],
                                                "id": 1878,
                                                "name": "MemberAccess",
                                                "src": "26163:41:1"
                                              }
                                            ],
                                            "id": 1879,
                                            "name": "FunctionCall",
                                            "src": "26163:43:1"
                                          }
                                        ],
                                        "id": 1880,
                                        "name": "Assignment",
                                        "src": "26129:77:1"
                                      }
                                    ],
                                    "id": 1881,
                                    "name": "ExpressionStatement",
                                    "src": "26129:77:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "amountCalculated",
                                              "referencedDeclaration": 1618,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1882,
                                                "name": "Identifier",
                                                "src": "26224:5:1"
                                              }
                                            ],
                                            "id": 1884,
                                            "name": "MemberAccess",
                                            "src": "26224:22:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sub",
                                                  "referencedDeclaration": 4171,
                                                  "type": "function (int256,int256) pure returns (int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "amountCalculated",
                                                      "referencedDeclaration": 1618,
                                                      "type": "int256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1742,
                                                          "type": "struct MoonwalkerPool.SwapState memory",
                                                          "value": "state"
                                                        },
                                                        "id": 1885,
                                                        "name": "Identifier",
                                                        "src": "26249:5:1"
                                                      }
                                                    ],
                                                    "id": 1886,
                                                    "name": "MemberAccess",
                                                    "src": "26249:22:1"
                                                  }
                                                ],
                                                "id": 1887,
                                                "name": "MemberAccess",
                                                "src": "26249:26:1"
                                              },
                                              {
                                                "attributes": {
                                                  "arguments": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        null
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "toInt256",
                                                      "referencedDeclaration": 5149,
                                                      "type": "function (uint256) pure returns (int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "amountOut",
                                                          "referencedDeclaration": 1641,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1769,
                                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                                              "value": "step"
                                                            },
                                                            "id": 1888,
                                                            "name": "Identifier",
                                                            "src": "26276:4:1"
                                                          }
                                                        ],
                                                        "id": 1889,
                                                        "name": "MemberAccess",
                                                        "src": "26276:14:1"
                                                      }
                                                    ],
                                                    "id": 1890,
                                                    "name": "MemberAccess",
                                                    "src": "26276:23:1"
                                                  }
                                                ],
                                                "id": 1891,
                                                "name": "FunctionCall",
                                                "src": "26276:25:1"
                                              }
                                            ],
                                            "id": 1892,
                                            "name": "FunctionCall",
                                            "src": "26249:53:1"
                                          }
                                        ],
                                        "id": 1893,
                                        "name": "Assignment",
                                        "src": "26224:78:1"
                                      }
                                    ],
                                    "id": 1894,
                                    "name": "ExpressionStatement",
                                    "src": "26224:78:1"
                                  }
                                ],
                                "id": 1895,
                                "name": "Block",
                                "src": "26111:206:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "+=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "amountSpecifiedRemaining",
                                              "referencedDeclaration": 1616,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1896,
                                                "name": "Identifier",
                                                "src": "26341:5:1"
                                              }
                                            ],
                                            "id": 1898,
                                            "name": "MemberAccess",
                                            "src": "26341:30:1"
                                          },
                                          {
                                            "attributes": {
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "toInt256",
                                                  "referencedDeclaration": 5149,
                                                  "type": "function (uint256) pure returns (int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "amountOut",
                                                      "referencedDeclaration": 1641,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1769,
                                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                                          "value": "step"
                                                        },
                                                        "id": 1899,
                                                        "name": "Identifier",
                                                        "src": "26375:4:1"
                                                      }
                                                    ],
                                                    "id": 1900,
                                                    "name": "MemberAccess",
                                                    "src": "26375:14:1"
                                                  }
                                                ],
                                                "id": 1901,
                                                "name": "MemberAccess",
                                                "src": "26375:23:1"
                                              }
                                            ],
                                            "id": 1902,
                                            "name": "FunctionCall",
                                            "src": "26375:25:1"
                                          }
                                        ],
                                        "id": 1903,
                                        "name": "Assignment",
                                        "src": "26341:59:1"
                                      }
                                    ],
                                    "id": 1904,
                                    "name": "ExpressionStatement",
                                    "src": "26341:59:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "amountCalculated",
                                              "referencedDeclaration": 1618,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1905,
                                                "name": "Identifier",
                                                "src": "26418:5:1"
                                              }
                                            ],
                                            "id": 1907,
                                            "name": "MemberAccess",
                                            "src": "26418:22:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "int256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 4144,
                                                  "type": "function (int256,int256) pure returns (int256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "amountCalculated",
                                                      "referencedDeclaration": 1618,
                                                      "type": "int256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1742,
                                                          "type": "struct MoonwalkerPool.SwapState memory",
                                                          "value": "state"
                                                        },
                                                        "id": 1908,
                                                        "name": "Identifier",
                                                        "src": "26443:5:1"
                                                      }
                                                    ],
                                                    "id": 1909,
                                                    "name": "MemberAccess",
                                                    "src": "26443:22:1"
                                                  }
                                                ],
                                                "id": 1910,
                                                "name": "MemberAccess",
                                                "src": "26443:26:1"
                                              },
                                              {
                                                "attributes": {
                                                  "arguments": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        null
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "toInt256",
                                                      "referencedDeclaration": 5149,
                                                      "type": "function (uint256) pure returns (int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "operator": "+",
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "amountIn",
                                                                  "referencedDeclaration": 1639,
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1769,
                                                                      "type": "struct MoonwalkerPool.StepComputations memory",
                                                                      "value": "step"
                                                                    },
                                                                    "id": 1911,
                                                                    "name": "Identifier",
                                                                    "src": "26471:4:1"
                                                                  }
                                                                ],
                                                                "id": 1912,
                                                                "name": "MemberAccess",
                                                                "src": "26471:13:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "feeAmount",
                                                                  "referencedDeclaration": 1643,
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1769,
                                                                      "type": "struct MoonwalkerPool.StepComputations memory",
                                                                      "value": "step"
                                                                    },
                                                                    "id": 1913,
                                                                    "name": "Identifier",
                                                                    "src": "26487:4:1"
                                                                  }
                                                                ],
                                                                "id": 1914,
                                                                "name": "MemberAccess",
                                                                "src": "26487:14:1"
                                                              }
                                                            ],
                                                            "id": 1915,
                                                            "name": "BinaryOperation",
                                                            "src": "26471:30:1"
                                                          }
                                                        ],
                                                        "id": 1916,
                                                        "name": "TupleExpression",
                                                        "src": "26470:32:1"
                                                      }
                                                    ],
                                                    "id": 1917,
                                                    "name": "MemberAccess",
                                                    "src": "26470:41:1"
                                                  }
                                                ],
                                                "id": 1918,
                                                "name": "FunctionCall",
                                                "src": "26470:43:1"
                                              }
                                            ],
                                            "id": 1919,
                                            "name": "FunctionCall",
                                            "src": "26443:71:1"
                                          }
                                        ],
                                        "id": 1920,
                                        "name": "Assignment",
                                        "src": "26418:96:1"
                                      }
                                    ],
                                    "id": 1921,
                                    "name": "ExpressionStatement",
                                    "src": "26418:96:1"
                                  }
                                ],
                                "id": 1922,
                                "name": "Block",
                                "src": "26323:206:1"
                              }
                            ],
                            "id": 1923,
                            "name": "IfStatement",
                            "src": "26095:434:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeProtocol",
                                      "referencedDeclaration": 1603,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1713,
                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                          "value": "cache"
                                        },
                                        "id": 1924,
                                        "name": "Identifier",
                                        "src": "26664:5:1"
                                      }
                                    ],
                                    "id": 1925,
                                    "name": "MemberAccess",
                                    "src": "26664:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1926,
                                    "name": "Literal",
                                    "src": "26684:1:1"
                                  }
                                ],
                                "id": 1927,
                                "name": "BinaryOperation",
                                "src": "26664:21:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        1929
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "delta",
                                          "scope": 1951,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 1928,
                                            "name": "ElementaryTypeName",
                                            "src": "26705:7:1"
                                          }
                                        ],
                                        "id": 1929,
                                        "name": "VariableDeclaration",
                                        "src": "26705:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "/",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "feeAmount",
                                              "referencedDeclaration": 1643,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1769,
                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                  "value": "step"
                                                },
                                                "id": 1930,
                                                "name": "Identifier",
                                                "src": "26721:4:1"
                                              }
                                            ],
                                            "id": 1931,
                                            "name": "MemberAccess",
                                            "src": "26721:14:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "feeProtocol",
                                              "referencedDeclaration": 1603,
                                              "type": "uint8"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1713,
                                                  "type": "struct MoonwalkerPool.SwapCache memory",
                                                  "value": "cache"
                                                },
                                                "id": 1932,
                                                "name": "Identifier",
                                                "src": "26738:5:1"
                                              }
                                            ],
                                            "id": 1933,
                                            "name": "MemberAccess",
                                            "src": "26738:17:1"
                                          }
                                        ],
                                        "id": 1934,
                                        "name": "BinaryOperation",
                                        "src": "26721:34:1"
                                      }
                                    ],
                                    "id": 1935,
                                    "name": "VariableDeclarationStatement",
                                    "src": "26705:50:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "feeAmount",
                                              "referencedDeclaration": 1643,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1769,
                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                  "value": "step"
                                                },
                                                "id": 1936,
                                                "name": "Identifier",
                                                "src": "26773:4:1"
                                              }
                                            ],
                                            "id": 1938,
                                            "name": "MemberAccess",
                                            "src": "26773:14:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1929,
                                              "type": "uint256",
                                              "value": "delta"
                                            },
                                            "id": 1939,
                                            "name": "Identifier",
                                            "src": "26791:5:1"
                                          }
                                        ],
                                        "id": 1940,
                                        "name": "Assignment",
                                        "src": "26773:23:1"
                                      }
                                    ],
                                    "id": 1941,
                                    "name": "ExpressionStatement",
                                    "src": "26773:23:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "+=",
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "protocolFee",
                                              "referencedDeclaration": 1626,
                                              "type": "uint128"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1942,
                                                "name": "Identifier",
                                                "src": "26814:5:1"
                                              }
                                            ],
                                            "id": 1944,
                                            "name": "MemberAccess",
                                            "src": "26814:17:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint128",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint128)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "uint128"
                                                    },
                                                    "id": 1945,
                                                    "name": "ElementaryTypeName",
                                                    "src": "26835:7:1"
                                                  }
                                                ],
                                                "id": 1946,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "26835:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1929,
                                                  "type": "uint256",
                                                  "value": "delta"
                                                },
                                                "id": 1947,
                                                "name": "Identifier",
                                                "src": "26843:5:1"
                                              }
                                            ],
                                            "id": 1948,
                                            "name": "FunctionCall",
                                            "src": "26835:14:1"
                                          }
                                        ],
                                        "id": 1949,
                                        "name": "Assignment",
                                        "src": "26814:35:1"
                                      }
                                    ],
                                    "id": 1950,
                                    "name": "ExpressionStatement",
                                    "src": "26814:35:1"
                                  }
                                ],
                                "id": 1951,
                                "name": "Block",
                                "src": "26687:177:1"
                              }
                            ],
                            "id": 1952,
                            "name": "IfStatement",
                            "src": "26660:204:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "liquidity",
                                      "referencedDeclaration": 1628,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 1953,
                                        "name": "Identifier",
                                        "src": "26923:5:1"
                                      }
                                    ],
                                    "id": 1954,
                                    "name": "MemberAccess",
                                    "src": "26923:15:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1955,
                                    "name": "Literal",
                                    "src": "26941:1:1"
                                  }
                                ],
                                "id": 1956,
                                "name": "BinaryOperation",
                                "src": "26923:19:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+=",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "feeGrowthGlobalX128",
                                          "referencedDeclaration": 1624,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 1957,
                                            "name": "Identifier",
                                            "src": "26960:5:1"
                                          }
                                        ],
                                        "id": 1959,
                                        "name": "MemberAccess",
                                        "src": "26960:25:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "mulDiv",
                                              "referencedDeclaration": 3946,
                                              "type": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3990,
                                                  "type": "type(library FullMath)",
                                                  "value": "FullMath"
                                                },
                                                "id": 1960,
                                                "name": "Identifier",
                                                "src": "26989:8:1"
                                              }
                                            ],
                                            "id": 1961,
                                            "name": "MemberAccess",
                                            "src": "26989:15:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "feeAmount",
                                              "referencedDeclaration": 1643,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1769,
                                                  "type": "struct MoonwalkerPool.StepComputations memory",
                                                  "value": "step"
                                                },
                                                "id": 1962,
                                                "name": "Identifier",
                                                "src": "27005:4:1"
                                              }
                                            ],
                                            "id": 1963,
                                            "name": "MemberAccess",
                                            "src": "27005:14:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "Q128",
                                              "referencedDeclaration": 3806,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3807,
                                                  "type": "type(library FixedPoint128)",
                                                  "value": "FixedPoint128"
                                                },
                                                "id": 1964,
                                                "name": "Identifier",
                                                "src": "27021:13:1"
                                              }
                                            ],
                                            "id": 1965,
                                            "name": "MemberAccess",
                                            "src": "27021:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "liquidity",
                                              "referencedDeclaration": 1628,
                                              "type": "uint128"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 1966,
                                                "name": "Identifier",
                                                "src": "27041:5:1"
                                              }
                                            ],
                                            "id": 1967,
                                            "name": "MemberAccess",
                                            "src": "27041:15:1"
                                          }
                                        ],
                                        "id": 1968,
                                        "name": "FunctionCall",
                                        "src": "26989:68:1"
                                      }
                                    ],
                                    "id": 1969,
                                    "name": "Assignment",
                                    "src": "26960:97:1"
                                  }
                                ],
                                "id": 1970,
                                "name": "ExpressionStatement",
                                "src": "26960:97:1"
                              }
                            ],
                            "id": 1971,
                            "name": "IfStatement",
                            "src": "26919:138:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sqrtPriceX96",
                                      "referencedDeclaration": 1620,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 1972,
                                        "name": "Identifier",
                                        "src": "27131:5:1"
                                      }
                                    ],
                                    "id": 1973,
                                    "name": "MemberAccess",
                                    "src": "27131:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sqrtPriceNextX96",
                                      "referencedDeclaration": 1637,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1769,
                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                          "value": "step"
                                        },
                                        "id": 1974,
                                        "name": "Identifier",
                                        "src": "27153:4:1"
                                      }
                                    ],
                                    "id": 1975,
                                    "name": "MemberAccess",
                                    "src": "27153:21:1"
                                  }
                                ],
                                "id": 1976,
                                "name": "BinaryOperation",
                                "src": "27131:43:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {},
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "initialized",
                                          "referencedDeclaration": 1635,
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 1977,
                                            "name": "Identifier",
                                            "src": "27269:4:1"
                                          }
                                        ],
                                        "id": 1978,
                                        "name": "MemberAccess",
                                        "src": "27269:16:1"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {},
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "!",
                                                  "prefix": true,
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "computedLatestObservation",
                                                      "referencedDeclaration": 1613,
                                                      "type": "bool"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1713,
                                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                                          "value": "cache"
                                                        },
                                                        "id": 1979,
                                                        "name": "Identifier",
                                                        "src": "27484:5:1"
                                                      }
                                                    ],
                                                    "id": 1980,
                                                    "name": "MemberAccess",
                                                    "src": "27484:31:1"
                                                  }
                                                ],
                                                "id": 1981,
                                                "name": "UnaryOperation",
                                                "src": "27483:32:1"
                                              },
                                              {
                                                "children": [
                                                  {
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "=",
                                                          "type": "tuple()"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isInlineArray": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": true,
                                                              "type": "tuple(int56,uint160)"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": true,
                                                                  "member_name": "tickCumulative",
                                                                  "referencedDeclaration": 1609,
                                                                  "type": "int56"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1713,
                                                                      "type": "struct MoonwalkerPool.SwapCache memory",
                                                                      "value": "cache"
                                                                    },
                                                                    "id": 1982,
                                                                    "name": "Identifier",
                                                                    "src": "27544:5:1"
                                                                  }
                                                                ],
                                                                "id": 1984,
                                                                "name": "MemberAccess",
                                                                "src": "27544:20:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": true,
                                                                  "member_name": "secondsPerLiquidityCumulativeX128",
                                                                  "referencedDeclaration": 1611,
                                                                  "type": "uint160"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1713,
                                                                      "type": "struct MoonwalkerPool.SwapCache memory",
                                                                      "value": "cache"
                                                                    },
                                                                    "id": 1985,
                                                                    "name": "Identifier",
                                                                    "src": "27566:5:1"
                                                                  }
                                                                ],
                                                                "id": 1986,
                                                                "name": "MemberAccess",
                                                                "src": "27566:39:1"
                                                              }
                                                            ],
                                                            "id": 1987,
                                                            "name": "TupleExpression",
                                                            "src": "27543:63:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "isStructConstructorCall": false,
                                                              "lValueRequested": false,
                                                              "names": [
                                                                null
                                                              ],
                                                              "tryCall": false,
                                                              "type": "tuple(int56,uint160)",
                                                              "type_conversion": false
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_uint32",
                                                                      "typeString": "uint32"
                                                                    },
                                                                    {
                                                                      "typeIdentifier": "t_rational_0_by_1",
                                                                      "typeString": "int_const 0"
                                                                    },
                                                                    {
                                                                      "typeIdentifier": "t_int24",
                                                                      "typeString": "int24"
                                                                    },
                                                                    {
                                                                      "typeIdentifier": "t_uint16",
                                                                      "typeString": "uint16"
                                                                    },
                                                                    {
                                                                      "typeIdentifier": "t_uint128",
                                                                      "typeString": "uint128"
                                                                    },
                                                                    {
                                                                      "typeIdentifier": "t_uint16",
                                                                      "typeString": "uint16"
                                                                    }
                                                                  ],
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "observeSingle",
                                                                  "referencedDeclaration": 4820,
                                                                  "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 424,
                                                                      "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                                                      "value": "observations"
                                                                    },
                                                                    "id": 1988,
                                                                    "name": "Identifier",
                                                                    "src": "27609:12:1"
                                                                  }
                                                                ],
                                                                "id": 1989,
                                                                "name": "MemberAccess",
                                                                "src": "27609:26:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "blockTimestamp",
                                                                  "referencedDeclaration": 1607,
                                                                  "type": "uint32"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1713,
                                                                      "type": "struct MoonwalkerPool.SwapCache memory",
                                                                      "value": "cache"
                                                                    },
                                                                    "id": 1990,
                                                                    "name": "Identifier",
                                                                    "src": "27665:5:1"
                                                                  }
                                                                ],
                                                                "id": 1991,
                                                                "name": "MemberAccess",
                                                                "src": "27665:20:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "hexvalue": "30",
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "token": "number",
                                                                  "type": "int_const 0",
                                                                  "value": "0"
                                                                },
                                                                "id": 1992,
                                                                "name": "Literal",
                                                                "src": "27715:1:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "tick",
                                                                  "referencedDeclaration": 364,
                                                                  "type": "int24"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1673,
                                                                      "type": "struct MoonwalkerPool.Slot0 memory",
                                                                      "value": "slot0Start"
                                                                    },
                                                                    "id": 1993,
                                                                    "name": "Identifier",
                                                                    "src": "27746:10:1"
                                                                  }
                                                                ],
                                                                "id": 1994,
                                                                "name": "MemberAccess",
                                                                "src": "27746:15:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "observationIndex",
                                                                  "referencedDeclaration": 366,
                                                                  "type": "uint16"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1673,
                                                                      "type": "struct MoonwalkerPool.Slot0 memory",
                                                                      "value": "slot0Start"
                                                                    },
                                                                    "id": 1995,
                                                                    "name": "Identifier",
                                                                    "src": "27791:10:1"
                                                                  }
                                                                ],
                                                                "id": 1996,
                                                                "name": "MemberAccess",
                                                                "src": "27791:27:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "liquidityStart",
                                                                  "referencedDeclaration": 1605,
                                                                  "type": "uint128"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1713,
                                                                      "type": "struct MoonwalkerPool.SwapCache memory",
                                                                      "value": "cache"
                                                                    },
                                                                    "id": 1997,
                                                                    "name": "Identifier",
                                                                    "src": "27848:5:1"
                                                                  }
                                                                ],
                                                                "id": 1998,
                                                                "name": "MemberAccess",
                                                                "src": "27848:20:1"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "member_name": "observationCardinality",
                                                                  "referencedDeclaration": 368,
                                                                  "type": "uint16"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 1673,
                                                                      "type": "struct MoonwalkerPool.Slot0 memory",
                                                                      "value": "slot0Start"
                                                                    },
                                                                    "id": 1999,
                                                                    "name": "Identifier",
                                                                    "src": "27898:10:1"
                                                                  }
                                                                ],
                                                                "id": 2000,
                                                                "name": "MemberAccess",
                                                                "src": "27898:33:1"
                                                              }
                                                            ],
                                                            "id": 2001,
                                                            "name": "FunctionCall",
                                                            "src": "27609:348:1"
                                                          }
                                                        ],
                                                        "id": 2002,
                                                        "name": "Assignment",
                                                        "src": "27543:414:1"
                                                      }
                                                    ],
                                                    "id": 2003,
                                                    "name": "ExpressionStatement",
                                                    "src": "27543:414:1"
                                                  },
                                                  {
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "=",
                                                          "type": "bool"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": true,
                                                              "member_name": "computedLatestObservation",
                                                              "referencedDeclaration": 1613,
                                                              "type": "bool"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1713,
                                                                  "type": "struct MoonwalkerPool.SwapCache memory",
                                                                  "value": "cache"
                                                                },
                                                                "id": 2004,
                                                                "name": "Identifier",
                                                                "src": "27983:5:1"
                                                              }
                                                            ],
                                                            "id": 2006,
                                                            "name": "MemberAccess",
                                                            "src": "27983:31:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "hexvalue": "74727565",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "token": "bool",
                                                              "type": "bool",
                                                              "value": "true"
                                                            },
                                                            "id": 2007,
                                                            "name": "Literal",
                                                            "src": "28017:4:1"
                                                          }
                                                        ],
                                                        "id": 2008,
                                                        "name": "Assignment",
                                                        "src": "27983:38:1"
                                                      }
                                                    ],
                                                    "id": 2009,
                                                    "name": "ExpressionStatement",
                                                    "src": "27983:38:1"
                                                  }
                                                ],
                                                "id": 2010,
                                                "name": "Block",
                                                "src": "27517:527:1"
                                              }
                                            ],
                                            "id": 2011,
                                            "name": "IfStatement",
                                            "src": "27479:565:1"
                                          },
                                          {
                                            "attributes": {
                                              "assignments": [
                                                2013
                                              ]
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "constant": false,
                                                  "mutability": "mutable",
                                                  "name": "liquidityNet",
                                                  "scope": 2056,
                                                  "stateVariable": false,
                                                  "storageLocation": "default",
                                                  "type": "int128",
                                                  "visibility": "internal"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "int128",
                                                      "type": "int128"
                                                    },
                                                    "id": 2012,
                                                    "name": "ElementaryTypeName",
                                                    "src": "28065:6:1"
                                                  }
                                                ],
                                                "id": 2013,
                                                "name": "VariableDeclaration",
                                                "src": "28065:19:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int128",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int24",
                                                          "typeString": "int24"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_int56",
                                                          "typeString": "int56"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint32",
                                                          "typeString": "uint32"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "cross",
                                                      "referencedDeclaration": 6378,
                                                      "type": "function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32) returns (int128)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 406,
                                                          "type": "mapping(int24 => struct Tick.Info storage ref)",
                                                          "value": "ticks"
                                                        },
                                                        "id": 2014,
                                                        "name": "Identifier",
                                                        "src": "28111:5:1"
                                                      }
                                                    ],
                                                    "id": 2015,
                                                    "name": "MemberAccess",
                                                    "src": "28111:11:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tickNext",
                                                      "referencedDeclaration": 1633,
                                                      "type": "int24"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1769,
                                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                                          "value": "step"
                                                        },
                                                        "id": 2016,
                                                        "name": "Identifier",
                                                        "src": "28152:4:1"
                                                      }
                                                    ],
                                                    "id": 2017,
                                                    "name": "MemberAccess",
                                                    "src": "28152:13:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1649,
                                                              "type": "bool",
                                                              "value": "zeroForOne"
                                                            },
                                                            "id": 2018,
                                                            "name": "Identifier",
                                                            "src": "28196:10:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "feeGrowthGlobalX128",
                                                              "referencedDeclaration": 1624,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1742,
                                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                                  "value": "state"
                                                                },
                                                                "id": 2019,
                                                                "name": "Identifier",
                                                                "src": "28209:5:1"
                                                              }
                                                            ],
                                                            "id": 2020,
                                                            "name": "MemberAccess",
                                                            "src": "28209:25:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 383,
                                                              "type": "uint256",
                                                              "value": "feeGrowthGlobal0X128"
                                                            },
                                                            "id": 2021,
                                                            "name": "Identifier",
                                                            "src": "28237:20:1"
                                                          }
                                                        ],
                                                        "id": 2022,
                                                        "name": "Conditional",
                                                        "src": "28196:61:1"
                                                      }
                                                    ],
                                                    "id": 2023,
                                                    "name": "TupleExpression",
                                                    "src": "28195:63:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1649,
                                                              "type": "bool",
                                                              "value": "zeroForOne"
                                                            },
                                                            "id": 2024,
                                                            "name": "Identifier",
                                                            "src": "28289:10:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 387,
                                                              "type": "uint256",
                                                              "value": "feeGrowthGlobal1X128"
                                                            },
                                                            "id": 2025,
                                                            "name": "Identifier",
                                                            "src": "28302:20:1"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "feeGrowthGlobalX128",
                                                              "referencedDeclaration": 1624,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1742,
                                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                                  "value": "state"
                                                                },
                                                                "id": 2026,
                                                                "name": "Identifier",
                                                                "src": "28325:5:1"
                                                              }
                                                            ],
                                                            "id": 2027,
                                                            "name": "MemberAccess",
                                                            "src": "28325:25:1"
                                                          }
                                                        ],
                                                        "id": 2028,
                                                        "name": "Conditional",
                                                        "src": "28289:61:1"
                                                      }
                                                    ],
                                                    "id": 2029,
                                                    "name": "TupleExpression",
                                                    "src": "28288:63:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "secondsPerLiquidityCumulativeX128",
                                                      "referencedDeclaration": 1611,
                                                      "type": "uint160"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1713,
                                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                                          "value": "cache"
                                                        },
                                                        "id": 2030,
                                                        "name": "Identifier",
                                                        "src": "28381:5:1"
                                                      }
                                                    ],
                                                    "id": 2031,
                                                    "name": "MemberAccess",
                                                    "src": "28381:39:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tickCumulative",
                                                      "referencedDeclaration": 1609,
                                                      "type": "int56"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1713,
                                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                                          "value": "cache"
                                                        },
                                                        "id": 2032,
                                                        "name": "Identifier",
                                                        "src": "28450:5:1"
                                                      }
                                                    ],
                                                    "id": 2033,
                                                    "name": "MemberAccess",
                                                    "src": "28450:20:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "blockTimestamp",
                                                      "referencedDeclaration": 1607,
                                                      "type": "uint32"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1713,
                                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                                          "value": "cache"
                                                        },
                                                        "id": 2034,
                                                        "name": "Identifier",
                                                        "src": "28500:5:1"
                                                      }
                                                    ],
                                                    "id": 2035,
                                                    "name": "MemberAccess",
                                                    "src": "28500:20:1"
                                                  }
                                                ],
                                                "id": 2036,
                                                "name": "FunctionCall",
                                                "src": "28111:435:1"
                                              }
                                            ],
                                            "id": 2037,
                                            "name": "VariableDeclarationStatement",
                                            "src": "28065:481:1"
                                          },
                                          {
                                            "attributes": {},
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1649,
                                                  "type": "bool",
                                                  "value": "zeroForOne"
                                                },
                                                "id": 2038,
                                                "name": "Identifier",
                                                "src": "28744:10:1"
                                              },
                                              {
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "=",
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2013,
                                                          "type": "int128",
                                                          "value": "liquidityNet"
                                                        },
                                                        "id": 2039,
                                                        "name": "Identifier",
                                                        "src": "28756:12:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "-",
                                                          "prefix": true,
                                                          "type": "int128"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2013,
                                                              "type": "int128",
                                                              "value": "liquidityNet"
                                                            },
                                                            "id": 2040,
                                                            "name": "Identifier",
                                                            "src": "28772:12:1"
                                                          }
                                                        ],
                                                        "id": 2041,
                                                        "name": "UnaryOperation",
                                                        "src": "28771:13:1"
                                                      }
                                                    ],
                                                    "id": 2042,
                                                    "name": "Assignment",
                                                    "src": "28756:28:1"
                                                  }
                                                ],
                                                "id": 2043,
                                                "name": "ExpressionStatement",
                                                "src": "28756:28:1"
                                              }
                                            ],
                                            "id": 2044,
                                            "name": "IfStatement",
                                            "src": "28740:44:1"
                                          },
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "=",
                                                  "type": "uint128"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "member_name": "liquidity",
                                                      "referencedDeclaration": 1628,
                                                      "type": "uint128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1742,
                                                          "type": "struct MoonwalkerPool.SwapState memory",
                                                          "value": "state"
                                                        },
                                                        "id": 2045,
                                                        "name": "Identifier",
                                                        "src": "28807:5:1"
                                                      }
                                                    ],
                                                    "id": 2047,
                                                    "name": "MemberAccess",
                                                    "src": "28807:15:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint128",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint128",
                                                              "typeString": "uint128"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_int128",
                                                              "typeString": "int128"
                                                            }
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "addDelta",
                                                          "referencedDeclaration": 4041,
                                                          "type": "function (uint128,int128) pure returns (uint128)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 4042,
                                                              "type": "type(library LiquidityMath)",
                                                              "value": "LiquidityMath"
                                                            },
                                                            "id": 2048,
                                                            "name": "Identifier",
                                                            "src": "28825:13:1"
                                                          }
                                                        ],
                                                        "id": 2049,
                                                        "name": "MemberAccess",
                                                        "src": "28825:22:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "liquidity",
                                                          "referencedDeclaration": 1628,
                                                          "type": "uint128"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1742,
                                                              "type": "struct MoonwalkerPool.SwapState memory",
                                                              "value": "state"
                                                            },
                                                            "id": 2050,
                                                            "name": "Identifier",
                                                            "src": "28848:5:1"
                                                          }
                                                        ],
                                                        "id": 2051,
                                                        "name": "MemberAccess",
                                                        "src": "28848:15:1"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2013,
                                                          "type": "int128",
                                                          "value": "liquidityNet"
                                                        },
                                                        "id": 2052,
                                                        "name": "Identifier",
                                                        "src": "28865:12:1"
                                                      }
                                                    ],
                                                    "id": 2053,
                                                    "name": "FunctionCall",
                                                    "src": "28825:53:1"
                                                  }
                                                ],
                                                "id": 2054,
                                                "name": "Assignment",
                                                "src": "28807:71:1"
                                              }
                                            ],
                                            "id": 2055,
                                            "name": "ExpressionStatement",
                                            "src": "28807:71:1"
                                          }
                                        ],
                                        "id": 2056,
                                        "name": "Block",
                                        "src": "27287:1610:1"
                                      }
                                    ],
                                    "id": 2057,
                                    "name": "IfStatement",
                                    "src": "27265:1632:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "tick",
                                              "referencedDeclaration": 1622,
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1742,
                                                  "type": "struct MoonwalkerPool.SwapState memory",
                                                  "value": "state"
                                                },
                                                "id": 2058,
                                                "name": "Identifier",
                                                "src": "28915:5:1"
                                              }
                                            ],
                                            "id": 2060,
                                            "name": "MemberAccess",
                                            "src": "28915:10:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1649,
                                                  "type": "bool",
                                                  "value": "zeroForOne"
                                                },
                                                "id": 2061,
                                                "name": "Identifier",
                                                "src": "28928:10:1"
                                              },
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "-",
                                                  "type": "int24"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "tickNext",
                                                      "referencedDeclaration": 1633,
                                                      "type": "int24"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1769,
                                                          "type": "struct MoonwalkerPool.StepComputations memory",
                                                          "value": "step"
                                                        },
                                                        "id": 2062,
                                                        "name": "Identifier",
                                                        "src": "28941:4:1"
                                                      }
                                                    ],
                                                    "id": 2063,
                                                    "name": "MemberAccess",
                                                    "src": "28941:13:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "31",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 1",
                                                      "value": "1"
                                                    },
                                                    "id": 2064,
                                                    "name": "Literal",
                                                    "src": "28957:1:1"
                                                  }
                                                ],
                                                "id": 2065,
                                                "name": "BinaryOperation",
                                                "src": "28941:17:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "tickNext",
                                                  "referencedDeclaration": 1633,
                                                  "type": "int24"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1769,
                                                      "type": "struct MoonwalkerPool.StepComputations memory",
                                                      "value": "step"
                                                    },
                                                    "id": 2066,
                                                    "name": "Identifier",
                                                    "src": "28961:4:1"
                                                  }
                                                ],
                                                "id": 2067,
                                                "name": "MemberAccess",
                                                "src": "28961:13:1"
                                              }
                                            ],
                                            "id": 2068,
                                            "name": "Conditional",
                                            "src": "28928:46:1"
                                          }
                                        ],
                                        "id": 2069,
                                        "name": "Assignment",
                                        "src": "28915:59:1"
                                      }
                                    ],
                                    "id": 2070,
                                    "name": "ExpressionStatement",
                                    "src": "28915:59:1"
                                  }
                                ],
                                "id": 2071,
                                "name": "Block",
                                "src": "27176:1813:1"
                              },
                              {
                                "attributes": {},
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 1620,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2072,
                                            "name": "Identifier",
                                            "src": "28999:5:1"
                                          }
                                        ],
                                        "id": 2073,
                                        "name": "MemberAccess",
                                        "src": "28999:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceStartX96",
                                          "referencedDeclaration": 1631,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1769,
                                              "type": "struct MoonwalkerPool.StepComputations memory",
                                              "value": "step"
                                            },
                                            "id": 2074,
                                            "name": "Identifier",
                                            "src": "29021:4:1"
                                          }
                                        ],
                                        "id": 2075,
                                        "name": "MemberAccess",
                                        "src": "29021:22:1"
                                      }
                                    ],
                                    "id": 2076,
                                    "name": "BinaryOperation",
                                    "src": "28999:44:1"
                                  },
                                  {
                                    "children": [
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "int24"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "member_name": "tick",
                                                  "referencedDeclaration": 1622,
                                                  "type": "int24"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1742,
                                                      "type": "struct MoonwalkerPool.SwapState memory",
                                                      "value": "state"
                                                    },
                                                    "id": 2077,
                                                    "name": "Identifier",
                                                    "src": "29183:5:1"
                                                  }
                                                ],
                                                "id": 2079,
                                                "name": "MemberAccess",
                                                "src": "29183:10:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int24",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint160",
                                                          "typeString": "uint160"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getTickAtSqrtRatio",
                                                      "referencedDeclaration": 7169,
                                                      "type": "function (uint160) pure returns (int24)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 7170,
                                                          "type": "type(library TickMath)",
                                                          "value": "TickMath"
                                                        },
                                                        "id": 2080,
                                                        "name": "Identifier",
                                                        "src": "29196:8:1"
                                                      }
                                                    ],
                                                    "id": 2081,
                                                    "name": "MemberAccess",
                                                    "src": "29196:27:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "sqrtPriceX96",
                                                      "referencedDeclaration": 1620,
                                                      "type": "uint160"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1742,
                                                          "type": "struct MoonwalkerPool.SwapState memory",
                                                          "value": "state"
                                                        },
                                                        "id": 2082,
                                                        "name": "Identifier",
                                                        "src": "29224:5:1"
                                                      }
                                                    ],
                                                    "id": 2083,
                                                    "name": "MemberAccess",
                                                    "src": "29224:18:1"
                                                  }
                                                ],
                                                "id": 2084,
                                                "name": "FunctionCall",
                                                "src": "29196:47:1"
                                              }
                                            ],
                                            "id": 2085,
                                            "name": "Assignment",
                                            "src": "29183:60:1"
                                          }
                                        ],
                                        "id": 2086,
                                        "name": "ExpressionStatement",
                                        "src": "29183:60:1"
                                      }
                                    ],
                                    "id": 2087,
                                    "name": "Block",
                                    "src": "29045:213:1"
                                  }
                                ],
                                "id": 2088,
                                "name": "IfStatement",
                                "src": "28995:263:1"
                              }
                            ],
                            "id": 2089,
                            "name": "IfStatement",
                            "src": "27127:2131:1"
                          }
                        ],
                        "id": 2090,
                        "name": "Block",
                        "src": "24734:4534:1"
                      }
                    ],
                    "id": 2091,
                    "name": "WhileStatement",
                    "src": "24647:4621:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 1622,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1742,
                                  "type": "struct MoonwalkerPool.SwapState memory",
                                  "value": "state"
                                },
                                "id": 2092,
                                "name": "Identifier",
                                "src": "29350:5:1"
                              }
                            ],
                            "id": 2093,
                            "name": "MemberAccess",
                            "src": "29350:10:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 364,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1673,
                                  "type": "struct MoonwalkerPool.Slot0 memory",
                                  "value": "slot0Start"
                                },
                                "id": 2094,
                                "name": "Identifier",
                                "src": "29364:10:1"
                              }
                            ],
                            "id": 2095,
                            "name": "MemberAccess",
                            "src": "29364:15:1"
                          }
                        ],
                        "id": 2096,
                        "name": "BinaryOperation",
                        "src": "29350:29:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2098,
                                2100
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "observationIndex",
                                  "scope": 2136,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint16",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint16",
                                      "type": "uint16"
                                    },
                                    "id": 2097,
                                    "name": "ElementaryTypeName",
                                    "src": "29396:6:1"
                                  }
                                ],
                                "id": 2098,
                                "name": "VariableDeclaration",
                                "src": "29396:23:1"
                              },
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "observationCardinality",
                                  "scope": 2136,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint16",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint16",
                                      "type": "uint16"
                                    },
                                    "id": 2099,
                                    "name": "ElementaryTypeName",
                                    "src": "29421:6:1"
                                  }
                                ],
                                "id": 2100,
                                "name": "VariableDeclaration",
                                "src": "29421:29:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple(uint16,uint16)",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "write",
                                      "referencedDeclaration": 4350,
                                      "type": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 424,
                                          "type": "struct Oracle.Observation storage ref[65535] storage ref",
                                          "value": "observations"
                                        },
                                        "id": 2101,
                                        "name": "Identifier",
                                        "src": "29470:12:1"
                                      }
                                    ],
                                    "id": 2102,
                                    "name": "MemberAccess",
                                    "src": "29470:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observationIndex",
                                      "referencedDeclaration": 366,
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1673,
                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                          "value": "slot0Start"
                                        },
                                        "id": 2103,
                                        "name": "Identifier",
                                        "src": "29510:10:1"
                                      }
                                    ],
                                    "id": 2104,
                                    "name": "MemberAccess",
                                    "src": "29510:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "blockTimestamp",
                                      "referencedDeclaration": 1607,
                                      "type": "uint32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1713,
                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                          "value": "cache"
                                        },
                                        "id": 2105,
                                        "name": "Identifier",
                                        "src": "29559:5:1"
                                      }
                                    ],
                                    "id": 2106,
                                    "name": "MemberAccess",
                                    "src": "29559:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tick",
                                      "referencedDeclaration": 364,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1673,
                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                          "value": "slot0Start"
                                        },
                                        "id": 2107,
                                        "name": "Identifier",
                                        "src": "29601:10:1"
                                      }
                                    ],
                                    "id": 2108,
                                    "name": "MemberAccess",
                                    "src": "29601:15:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "liquidityStart",
                                      "referencedDeclaration": 1605,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1713,
                                          "type": "struct MoonwalkerPool.SwapCache memory",
                                          "value": "cache"
                                        },
                                        "id": 2109,
                                        "name": "Identifier",
                                        "src": "29638:5:1"
                                      }
                                    ],
                                    "id": 2110,
                                    "name": "MemberAccess",
                                    "src": "29638:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observationCardinality",
                                      "referencedDeclaration": 368,
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1673,
                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                          "value": "slot0Start"
                                        },
                                        "id": 2111,
                                        "name": "Identifier",
                                        "src": "29680:10:1"
                                      }
                                    ],
                                    "id": 2112,
                                    "name": "MemberAccess",
                                    "src": "29680:33:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "observationCardinalityNext",
                                      "referencedDeclaration": 370,
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1673,
                                          "type": "struct MoonwalkerPool.Slot0 memory",
                                          "value": "slot0Start"
                                        },
                                        "id": 2113,
                                        "name": "Identifier",
                                        "src": "29735:10:1"
                                      }
                                    ],
                                    "id": 2114,
                                    "name": "MemberAccess",
                                    "src": "29735:37:1"
                                  }
                                ],
                                "id": 2115,
                                "name": "FunctionCall",
                                "src": "29470:320:1"
                              }
                            ],
                            "id": 2116,
                            "name": "VariableDeclarationStatement",
                            "src": "29395:395:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "tuple(uint160,int24,uint16,uint16)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 362,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 379,
                                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                                              "value": "slot0"
                                            },
                                            "id": 2117,
                                            "name": "Identifier",
                                            "src": "29805:5:1"
                                          }
                                        ],
                                        "id": 2119,
                                        "name": "MemberAccess",
                                        "src": "29805:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "tick",
                                          "referencedDeclaration": 364,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 379,
                                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                                              "value": "slot0"
                                            },
                                            "id": 2120,
                                            "name": "Identifier",
                                            "src": "29825:5:1"
                                          }
                                        ],
                                        "id": 2121,
                                        "name": "MemberAccess",
                                        "src": "29825:10:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "observationIndex",
                                          "referencedDeclaration": 366,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 379,
                                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                                              "value": "slot0"
                                            },
                                            "id": 2122,
                                            "name": "Identifier",
                                            "src": "29837:5:1"
                                          }
                                        ],
                                        "id": 2123,
                                        "name": "MemberAccess",
                                        "src": "29837:22:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "observationCardinality",
                                          "referencedDeclaration": 368,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 379,
                                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                                              "value": "slot0"
                                            },
                                            "id": 2124,
                                            "name": "Identifier",
                                            "src": "29861:5:1"
                                          }
                                        ],
                                        "id": 2125,
                                        "name": "MemberAccess",
                                        "src": "29861:28:1"
                                      }
                                    ],
                                    "id": 2126,
                                    "name": "TupleExpression",
                                    "src": "29804:86:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "tuple(uint160,int24,uint16,uint16)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sqrtPriceX96",
                                          "referencedDeclaration": 1620,
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2127,
                                            "name": "Identifier",
                                            "src": "29911:5:1"
                                          }
                                        ],
                                        "id": 2128,
                                        "name": "MemberAccess",
                                        "src": "29911:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tick",
                                          "referencedDeclaration": 1622,
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2129,
                                            "name": "Identifier",
                                            "src": "29947:5:1"
                                          }
                                        ],
                                        "id": 2130,
                                        "name": "MemberAccess",
                                        "src": "29947:10:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2098,
                                          "type": "uint16",
                                          "value": "observationIndex"
                                        },
                                        "id": 2131,
                                        "name": "Identifier",
                                        "src": "29975:16:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2100,
                                          "type": "uint16",
                                          "value": "observationCardinality"
                                        },
                                        "id": 2132,
                                        "name": "Identifier",
                                        "src": "30009:22:1"
                                      }
                                    ],
                                    "id": 2133,
                                    "name": "TupleExpression",
                                    "src": "29893:152:1"
                                  }
                                ],
                                "id": 2134,
                                "name": "Assignment",
                                "src": "29804:241:1"
                              }
                            ],
                            "id": 2135,
                            "name": "ExpressionStatement",
                            "src": "29804:241:1"
                          }
                        ],
                        "id": 2136,
                        "name": "Block",
                        "src": "29381:675:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "sqrtPriceX96",
                                      "referencedDeclaration": 362,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 2137,
                                        "name": "Identifier",
                                        "src": "30123:5:1"
                                      }
                                    ],
                                    "id": 2139,
                                    "name": "MemberAccess",
                                    "src": "30123:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sqrtPriceX96",
                                      "referencedDeclaration": 1620,
                                      "type": "uint160"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2140,
                                        "name": "Identifier",
                                        "src": "30144:5:1"
                                      }
                                    ],
                                    "id": 2141,
                                    "name": "MemberAccess",
                                    "src": "30144:18:1"
                                  }
                                ],
                                "id": 2142,
                                "name": "Assignment",
                                "src": "30123:39:1"
                              }
                            ],
                            "id": 2143,
                            "name": "ExpressionStatement",
                            "src": "30123:39:1"
                          }
                        ],
                        "id": 2144,
                        "name": "Block",
                        "src": "30062:111:1"
                      }
                    ],
                    "id": 2145,
                    "name": "IfStatement",
                    "src": "29346:827:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidityStart",
                              "referencedDeclaration": 1605,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1713,
                                  "type": "struct MoonwalkerPool.SwapCache memory",
                                  "value": "cache"
                                },
                                "id": 2146,
                                "name": "Identifier",
                                "src": "30229:5:1"
                              }
                            ],
                            "id": 2147,
                            "name": "MemberAccess",
                            "src": "30229:20:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidity",
                              "referencedDeclaration": 1628,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1742,
                                  "type": "struct MoonwalkerPool.SwapState memory",
                                  "value": "state"
                                },
                                "id": 2148,
                                "name": "Identifier",
                                "src": "30253:5:1"
                              }
                            ],
                            "id": 2149,
                            "name": "MemberAccess",
                            "src": "30253:15:1"
                          }
                        ],
                        "id": 2150,
                        "name": "BinaryOperation",
                        "src": "30229:39:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 400,
                                  "type": "uint128",
                                  "value": "liquidity"
                                },
                                "id": 2151,
                                "name": "Identifier",
                                "src": "30270:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "liquidity",
                                  "referencedDeclaration": 1628,
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1742,
                                      "type": "struct MoonwalkerPool.SwapState memory",
                                      "value": "state"
                                    },
                                    "id": 2152,
                                    "name": "Identifier",
                                    "src": "30282:5:1"
                                  }
                                ],
                                "id": 2153,
                                "name": "MemberAccess",
                                "src": "30282:15:1"
                              }
                            ],
                            "id": 2154,
                            "name": "Assignment",
                            "src": "30270:27:1"
                          }
                        ],
                        "id": 2155,
                        "name": "ExpressionStatement",
                        "src": "30270:27:1"
                      }
                    ],
                    "id": 2156,
                    "name": "IfStatement",
                    "src": "30225:72:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1649,
                          "type": "bool",
                          "value": "zeroForOne"
                        },
                        "id": 2157,
                        "name": "Identifier",
                        "src": "30479:10:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 383,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal0X128"
                                    },
                                    "id": 2158,
                                    "name": "Identifier",
                                    "src": "30505:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthGlobalX128",
                                      "referencedDeclaration": 1624,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2159,
                                        "name": "Identifier",
                                        "src": "30528:5:1"
                                      }
                                    ],
                                    "id": 2160,
                                    "name": "MemberAccess",
                                    "src": "30528:25:1"
                                  }
                                ],
                                "id": 2161,
                                "name": "Assignment",
                                "src": "30505:48:1"
                              }
                            ],
                            "id": 2162,
                            "name": "ExpressionStatement",
                            "src": "30505:48:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "protocolFee",
                                      "referencedDeclaration": 1626,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2163,
                                        "name": "Identifier",
                                        "src": "30571:5:1"
                                      }
                                    ],
                                    "id": 2164,
                                    "name": "MemberAccess",
                                    "src": "30571:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2165,
                                    "name": "Literal",
                                    "src": "30591:1:1"
                                  }
                                ],
                                "id": 2166,
                                "name": "BinaryOperation",
                                "src": "30571:21:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+=",
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "token0",
                                          "referencedDeclaration": 389,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 396,
                                              "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                              "value": "protocolFees"
                                            },
                                            "id": 2167,
                                            "name": "Identifier",
                                            "src": "30594:12:1"
                                          }
                                        ],
                                        "id": 2169,
                                        "name": "MemberAccess",
                                        "src": "30594:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "protocolFee",
                                          "referencedDeclaration": 1626,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2170,
                                            "name": "Identifier",
                                            "src": "30617:5:1"
                                          }
                                        ],
                                        "id": 2171,
                                        "name": "MemberAccess",
                                        "src": "30617:17:1"
                                      }
                                    ],
                                    "id": 2172,
                                    "name": "Assignment",
                                    "src": "30594:40:1"
                                  }
                                ],
                                "id": 2173,
                                "name": "ExpressionStatement",
                                "src": "30594:40:1"
                              }
                            ],
                            "id": 2174,
                            "name": "IfStatement",
                            "src": "30567:67:1"
                          }
                        ],
                        "id": 2175,
                        "name": "Block",
                        "src": "30491:154:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 387,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal1X128"
                                    },
                                    "id": 2176,
                                    "name": "Identifier",
                                    "src": "30665:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthGlobalX128",
                                      "referencedDeclaration": 1624,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2177,
                                        "name": "Identifier",
                                        "src": "30688:5:1"
                                      }
                                    ],
                                    "id": 2178,
                                    "name": "MemberAccess",
                                    "src": "30688:25:1"
                                  }
                                ],
                                "id": 2179,
                                "name": "Assignment",
                                "src": "30665:48:1"
                              }
                            ],
                            "id": 2180,
                            "name": "ExpressionStatement",
                            "src": "30665:48:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "protocolFee",
                                      "referencedDeclaration": 1626,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2181,
                                        "name": "Identifier",
                                        "src": "30731:5:1"
                                      }
                                    ],
                                    "id": 2182,
                                    "name": "MemberAccess",
                                    "src": "30731:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2183,
                                    "name": "Literal",
                                    "src": "30751:1:1"
                                  }
                                ],
                                "id": 2184,
                                "name": "BinaryOperation",
                                "src": "30731:21:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+=",
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "token1",
                                          "referencedDeclaration": 391,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 396,
                                              "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                              "value": "protocolFees"
                                            },
                                            "id": 2185,
                                            "name": "Identifier",
                                            "src": "30754:12:1"
                                          }
                                        ],
                                        "id": 2187,
                                        "name": "MemberAccess",
                                        "src": "30754:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "protocolFee",
                                          "referencedDeclaration": 1626,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2188,
                                            "name": "Identifier",
                                            "src": "30777:5:1"
                                          }
                                        ],
                                        "id": 2189,
                                        "name": "MemberAccess",
                                        "src": "30777:17:1"
                                      }
                                    ],
                                    "id": 2190,
                                    "name": "Assignment",
                                    "src": "30754:40:1"
                                  }
                                ],
                                "id": 2191,
                                "name": "ExpressionStatement",
                                "src": "30754:40:1"
                              }
                            ],
                            "id": 2192,
                            "name": "IfStatement",
                            "src": "30727:67:1"
                          }
                        ],
                        "id": 2193,
                        "name": "Block",
                        "src": "30651:154:1"
                      }
                    ],
                    "id": 2194,
                    "name": "IfStatement",
                    "src": "30475:330:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(int256,int256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "int256",
                                  "value": "amount0"
                                },
                                "id": 2195,
                                "name": "Identifier",
                                "src": "30816:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1663,
                                  "type": "int256",
                                  "value": "amount1"
                                },
                                "id": 2196,
                                "name": "Identifier",
                                "src": "30825:7:1"
                              }
                            ],
                            "id": 2197,
                            "name": "TupleExpression",
                            "src": "30815:18:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "tuple(int256,int256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1649,
                                      "type": "bool",
                                      "value": "zeroForOne"
                                    },
                                    "id": 2198,
                                    "name": "Identifier",
                                    "src": "30836:10:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1736,
                                      "type": "bool",
                                      "value": "exactInput"
                                    },
                                    "id": 2199,
                                    "name": "Identifier",
                                    "src": "30850:10:1"
                                  }
                                ],
                                "id": 2200,
                                "name": "BinaryOperation",
                                "src": "30836:24:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int256,int256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1651,
                                          "type": "int256",
                                          "value": "amountSpecified"
                                        },
                                        "id": 2201,
                                        "name": "Identifier",
                                        "src": "30876:15:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "amountSpecifiedRemaining",
                                          "referencedDeclaration": 1616,
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2202,
                                            "name": "Identifier",
                                            "src": "30894:5:1"
                                          }
                                        ],
                                        "id": 2203,
                                        "name": "MemberAccess",
                                        "src": "30894:30:1"
                                      }
                                    ],
                                    "id": 2204,
                                    "name": "BinaryOperation",
                                    "src": "30876:48:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "amountCalculated",
                                      "referencedDeclaration": 1618,
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2205,
                                        "name": "Identifier",
                                        "src": "30926:5:1"
                                      }
                                    ],
                                    "id": 2206,
                                    "name": "MemberAccess",
                                    "src": "30926:22:1"
                                  }
                                ],
                                "id": 2207,
                                "name": "TupleExpression",
                                "src": "30875:74:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "tuple(int256,int256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "amountCalculated",
                                      "referencedDeclaration": 1618,
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1742,
                                          "type": "struct MoonwalkerPool.SwapState memory",
                                          "value": "state"
                                        },
                                        "id": 2208,
                                        "name": "Identifier",
                                        "src": "30965:5:1"
                                      }
                                    ],
                                    "id": 2209,
                                    "name": "MemberAccess",
                                    "src": "30965:22:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1651,
                                          "type": "int256",
                                          "value": "amountSpecified"
                                        },
                                        "id": 2210,
                                        "name": "Identifier",
                                        "src": "30989:15:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "amountSpecifiedRemaining",
                                          "referencedDeclaration": 1616,
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1742,
                                              "type": "struct MoonwalkerPool.SwapState memory",
                                              "value": "state"
                                            },
                                            "id": 2211,
                                            "name": "Identifier",
                                            "src": "31007:5:1"
                                          }
                                        ],
                                        "id": 2212,
                                        "name": "MemberAccess",
                                        "src": "31007:30:1"
                                      }
                                    ],
                                    "id": 2213,
                                    "name": "BinaryOperation",
                                    "src": "30989:48:1"
                                  }
                                ],
                                "id": 2214,
                                "name": "TupleExpression",
                                "src": "30964:74:1"
                              }
                            ],
                            "id": 2215,
                            "name": "Conditional",
                            "src": "30836:202:1"
                          }
                        ],
                        "id": 2216,
                        "name": "Assignment",
                        "src": "30815:223:1"
                      }
                    ],
                    "id": 2217,
                    "name": "ExpressionStatement",
                    "src": "30815:223:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1649,
                          "type": "bool",
                          "value": "zeroForOne"
                        },
                        "id": 2218,
                        "name": "Identifier",
                        "src": "31101:10:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1663,
                                      "type": "int256",
                                      "value": "amount1"
                                    },
                                    "id": 2219,
                                    "name": "Identifier",
                                    "src": "31131:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2220,
                                    "name": "Literal",
                                    "src": "31141:1:1"
                                  }
                                ],
                                "id": 2221,
                                "name": "BinaryOperation",
                                "src": "31131:11:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple()",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "safeTransfer",
                                          "referencedDeclaration": 7220,
                                          "type": "function (address,address,uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7221,
                                              "type": "type(library TransferHelper)",
                                              "value": "TransferHelper"
                                            },
                                            "id": 2222,
                                            "name": "Identifier",
                                            "src": "31144:14:1"
                                          }
                                        ],
                                        "id": 2224,
                                        "name": "MemberAccess",
                                        "src": "31144:27:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 348,
                                          "type": "address",
                                          "value": "token1"
                                        },
                                        "id": 2225,
                                        "name": "Identifier",
                                        "src": "31172:6:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1647,
                                          "type": "address",
                                          "value": "recipient"
                                        },
                                        "id": 2226,
                                        "name": "Identifier",
                                        "src": "31180:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint256"
                                                },
                                                "id": 2227,
                                                "name": "ElementaryTypeName",
                                                "src": "31191:7:1"
                                              }
                                            ],
                                            "id": 2228,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "31191:7:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "prefix": true,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1663,
                                                  "type": "int256",
                                                  "value": "amount1"
                                                },
                                                "id": 2229,
                                                "name": "Identifier",
                                                "src": "31200:7:1"
                                              }
                                            ],
                                            "id": 2230,
                                            "name": "UnaryOperation",
                                            "src": "31199:8:1"
                                          }
                                        ],
                                        "id": 2231,
                                        "name": "FunctionCall",
                                        "src": "31191:17:1"
                                      }
                                    ],
                                    "id": 2232,
                                    "name": "FunctionCall",
                                    "src": "31144:65:1"
                                  }
                                ],
                                "id": 2233,
                                "name": "ExpressionStatement",
                                "src": "31144:65:1"
                              }
                            ],
                            "id": 2234,
                            "name": "IfStatement",
                            "src": "31127:82:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2236
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "balance0Before",
                                  "scope": 2264,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2235,
                                    "name": "ElementaryTypeName",
                                    "src": "31224:7:1"
                                  }
                                ],
                                "id": 2236,
                                "name": "VariableDeclaration",
                                "src": "31224:22:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 582,
                                      "type": "function () view returns (uint256)",
                                      "value": "balance0"
                                    },
                                    "id": 2237,
                                    "name": "Identifier",
                                    "src": "31249:8:1"
                                  }
                                ],
                                "id": 2238,
                                "name": "FunctionCall",
                                "src": "31249:10:1"
                              }
                            ],
                            "id": 2239,
                            "name": "VariableDeclarationStatement",
                            "src": "31224:35:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "moonwalkerSwapCallback",
                                      "referencedDeclaration": 3100,
                                      "type": "function (int256,int256,bytes memory) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IMoonwalkerSwapCallback",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3101,
                                              "type": "type(contract IMoonwalkerSwapCallback)",
                                              "value": "IMoonwalkerSwapCallback"
                                            },
                                            "id": 2240,
                                            "name": "Identifier",
                                            "src": "31273:23:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "type": "address payable"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4294967281,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 2241,
                                                "name": "Identifier",
                                                "src": "31297:3:1"
                                              }
                                            ],
                                            "id": 2242,
                                            "name": "MemberAccess",
                                            "src": "31297:10:1"
                                          }
                                        ],
                                        "id": 2243,
                                        "name": "FunctionCall",
                                        "src": "31273:35:1"
                                      }
                                    ],
                                    "id": 2244,
                                    "name": "MemberAccess",
                                    "src": "31273:58:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1661,
                                      "type": "int256",
                                      "value": "amount0"
                                    },
                                    "id": 2245,
                                    "name": "Identifier",
                                    "src": "31332:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1663,
                                      "type": "int256",
                                      "value": "amount1"
                                    },
                                    "id": 2246,
                                    "name": "Identifier",
                                    "src": "31341:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1655,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 2247,
                                    "name": "Identifier",
                                    "src": "31350:4:1"
                                  }
                                ],
                                "id": 2248,
                                "name": "FunctionCall",
                                "src": "31273:82:1"
                              }
                            ],
                            "id": 2249,
                            "name": "ExpressionStatement",
                            "src": "31273:82:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                          "typeString": "literal_string \"IIA\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 2250,
                                    "name": "Identifier",
                                    "src": "31369:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "add",
                                              "referencedDeclaration": 4067,
                                              "type": "function (uint256,uint256) pure returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2236,
                                                  "type": "uint256",
                                                  "value": "balance0Before"
                                                },
                                                "id": 2251,
                                                "name": "Identifier",
                                                "src": "31377:14:1"
                                              }
                                            ],
                                            "id": 2252,
                                            "name": "MemberAccess",
                                            "src": "31377:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "uint256"
                                                    },
                                                    "id": 2253,
                                                    "name": "ElementaryTypeName",
                                                    "src": "31396:7:1"
                                                  }
                                                ],
                                                "id": 2254,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "31396:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1661,
                                                  "type": "int256",
                                                  "value": "amount0"
                                                },
                                                "id": 2255,
                                                "name": "Identifier",
                                                "src": "31404:7:1"
                                              }
                                            ],
                                            "id": 2256,
                                            "name": "FunctionCall",
                                            "src": "31396:16:1"
                                          }
                                        ],
                                        "id": 2257,
                                        "name": "FunctionCall",
                                        "src": "31377:36:1"
                                      },
                                      {
                                        "attributes": {
                                          "arguments": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                null
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 582,
                                              "type": "function () view returns (uint256)",
                                              "value": "balance0"
                                            },
                                            "id": 2258,
                                            "name": "Identifier",
                                            "src": "31417:8:1"
                                          }
                                        ],
                                        "id": 2259,
                                        "name": "FunctionCall",
                                        "src": "31417:10:1"
                                      }
                                    ],
                                    "id": 2260,
                                    "name": "BinaryOperation",
                                    "src": "31377:50:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "494941",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"IIA\"",
                                      "value": "IIA"
                                    },
                                    "id": 2261,
                                    "name": "Literal",
                                    "src": "31429:5:1"
                                  }
                                ],
                                "id": 2262,
                                "name": "FunctionCall",
                                "src": "31369:66:1"
                              }
                            ],
                            "id": 2263,
                            "name": "ExpressionStatement",
                            "src": "31369:66:1"
                          }
                        ],
                        "id": 2264,
                        "name": "Block",
                        "src": "31113:333:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1661,
                                      "type": "int256",
                                      "value": "amount0"
                                    },
                                    "id": 2265,
                                    "name": "Identifier",
                                    "src": "31470:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2266,
                                    "name": "Literal",
                                    "src": "31480:1:1"
                                  }
                                ],
                                "id": 2267,
                                "name": "BinaryOperation",
                                "src": "31470:11:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple()",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "safeTransfer",
                                          "referencedDeclaration": 7220,
                                          "type": "function (address,address,uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7221,
                                              "type": "type(library TransferHelper)",
                                              "value": "TransferHelper"
                                            },
                                            "id": 2268,
                                            "name": "Identifier",
                                            "src": "31483:14:1"
                                          }
                                        ],
                                        "id": 2270,
                                        "name": "MemberAccess",
                                        "src": "31483:27:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 344,
                                          "type": "address",
                                          "value": "token0"
                                        },
                                        "id": 2271,
                                        "name": "Identifier",
                                        "src": "31511:6:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1647,
                                          "type": "address",
                                          "value": "recipient"
                                        },
                                        "id": 2272,
                                        "name": "Identifier",
                                        "src": "31519:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint256"
                                                },
                                                "id": 2273,
                                                "name": "ElementaryTypeName",
                                                "src": "31530:7:1"
                                              }
                                            ],
                                            "id": 2274,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "31530:7:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "prefix": true,
                                              "type": "int256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1661,
                                                  "type": "int256",
                                                  "value": "amount0"
                                                },
                                                "id": 2275,
                                                "name": "Identifier",
                                                "src": "31539:7:1"
                                              }
                                            ],
                                            "id": 2276,
                                            "name": "UnaryOperation",
                                            "src": "31538:8:1"
                                          }
                                        ],
                                        "id": 2277,
                                        "name": "FunctionCall",
                                        "src": "31530:17:1"
                                      }
                                    ],
                                    "id": 2278,
                                    "name": "FunctionCall",
                                    "src": "31483:65:1"
                                  }
                                ],
                                "id": 2279,
                                "name": "ExpressionStatement",
                                "src": "31483:65:1"
                              }
                            ],
                            "id": 2280,
                            "name": "IfStatement",
                            "src": "31466:82:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2282
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "balance1Before",
                                  "scope": 2310,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2281,
                                    "name": "ElementaryTypeName",
                                    "src": "31563:7:1"
                                  }
                                ],
                                "id": 2282,
                                "name": "VariableDeclaration",
                                "src": "31563:22:1"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 624,
                                      "type": "function () view returns (uint256)",
                                      "value": "balance1"
                                    },
                                    "id": 2283,
                                    "name": "Identifier",
                                    "src": "31588:8:1"
                                  }
                                ],
                                "id": 2284,
                                "name": "FunctionCall",
                                "src": "31588:10:1"
                              }
                            ],
                            "id": 2285,
                            "name": "VariableDeclarationStatement",
                            "src": "31563:35:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "moonwalkerSwapCallback",
                                      "referencedDeclaration": 3100,
                                      "type": "function (int256,int256,bytes memory) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IMoonwalkerSwapCallback",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3101,
                                              "type": "type(contract IMoonwalkerSwapCallback)",
                                              "value": "IMoonwalkerSwapCallback"
                                            },
                                            "id": 2286,
                                            "name": "Identifier",
                                            "src": "31612:23:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "type": "address payable"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4294967281,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 2287,
                                                "name": "Identifier",
                                                "src": "31636:3:1"
                                              }
                                            ],
                                            "id": 2288,
                                            "name": "MemberAccess",
                                            "src": "31636:10:1"
                                          }
                                        ],
                                        "id": 2289,
                                        "name": "FunctionCall",
                                        "src": "31612:35:1"
                                      }
                                    ],
                                    "id": 2290,
                                    "name": "MemberAccess",
                                    "src": "31612:58:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1661,
                                      "type": "int256",
                                      "value": "amount0"
                                    },
                                    "id": 2291,
                                    "name": "Identifier",
                                    "src": "31671:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1663,
                                      "type": "int256",
                                      "value": "amount1"
                                    },
                                    "id": 2292,
                                    "name": "Identifier",
                                    "src": "31680:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1655,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 2293,
                                    "name": "Identifier",
                                    "src": "31689:4:1"
                                  }
                                ],
                                "id": 2294,
                                "name": "FunctionCall",
                                "src": "31612:82:1"
                              }
                            ],
                            "id": 2295,
                            "name": "ExpressionStatement",
                            "src": "31612:82:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc",
                                          "typeString": "literal_string \"IIA\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 2296,
                                    "name": "Identifier",
                                    "src": "31708:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "add",
                                              "referencedDeclaration": 4067,
                                              "type": "function (uint256,uint256) pure returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2282,
                                                  "type": "uint256",
                                                  "value": "balance1Before"
                                                },
                                                "id": 2297,
                                                "name": "Identifier",
                                                "src": "31716:14:1"
                                              }
                                            ],
                                            "id": 2298,
                                            "name": "MemberAccess",
                                            "src": "31716:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "uint256"
                                                    },
                                                    "id": 2299,
                                                    "name": "ElementaryTypeName",
                                                    "src": "31735:7:1"
                                                  }
                                                ],
                                                "id": 2300,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "31735:7:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1663,
                                                  "type": "int256",
                                                  "value": "amount1"
                                                },
                                                "id": 2301,
                                                "name": "Identifier",
                                                "src": "31743:7:1"
                                              }
                                            ],
                                            "id": 2302,
                                            "name": "FunctionCall",
                                            "src": "31735:16:1"
                                          }
                                        ],
                                        "id": 2303,
                                        "name": "FunctionCall",
                                        "src": "31716:36:1"
                                      },
                                      {
                                        "attributes": {
                                          "arguments": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                null
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 624,
                                              "type": "function () view returns (uint256)",
                                              "value": "balance1"
                                            },
                                            "id": 2304,
                                            "name": "Identifier",
                                            "src": "31756:8:1"
                                          }
                                        ],
                                        "id": 2305,
                                        "name": "FunctionCall",
                                        "src": "31756:10:1"
                                      }
                                    ],
                                    "id": 2306,
                                    "name": "BinaryOperation",
                                    "src": "31716:50:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "494941",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"IIA\"",
                                      "value": "IIA"
                                    },
                                    "id": 2307,
                                    "name": "Literal",
                                    "src": "31768:5:1"
                                  }
                                ],
                                "id": 2308,
                                "name": "FunctionCall",
                                "src": "31708:66:1"
                              }
                            ],
                            "id": 2309,
                            "name": "ExpressionStatement",
                            "src": "31708:66:1"
                          }
                        ],
                        "id": 2310,
                        "name": "Block",
                        "src": "31452:333:1"
                      }
                    ],
                    "id": 2311,
                    "name": "IfStatement",
                    "src": "31097:688:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3302,
                              "type": "function (address,address,int256,int256,uint160,uint128,int24)",
                              "value": "Swap"
                            },
                            "id": 2312,
                            "name": "Identifier",
                            "src": "31800:4:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 2313,
                                "name": "Identifier",
                                "src": "31805:3:1"
                              }
                            ],
                            "id": 2314,
                            "name": "MemberAccess",
                            "src": "31805:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1647,
                              "type": "address",
                              "value": "recipient"
                            },
                            "id": 2315,
                            "name": "Identifier",
                            "src": "31817:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1661,
                              "type": "int256",
                              "value": "amount0"
                            },
                            "id": 2316,
                            "name": "Identifier",
                            "src": "31828:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1663,
                              "type": "int256",
                              "value": "amount1"
                            },
                            "id": 2317,
                            "name": "Identifier",
                            "src": "31837:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sqrtPriceX96",
                              "referencedDeclaration": 1620,
                              "type": "uint160"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1742,
                                  "type": "struct MoonwalkerPool.SwapState memory",
                                  "value": "state"
                                },
                                "id": 2318,
                                "name": "Identifier",
                                "src": "31846:5:1"
                              }
                            ],
                            "id": 2319,
                            "name": "MemberAccess",
                            "src": "31846:18:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidity",
                              "referencedDeclaration": 1628,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1742,
                                  "type": "struct MoonwalkerPool.SwapState memory",
                                  "value": "state"
                                },
                                "id": 2320,
                                "name": "Identifier",
                                "src": "31866:5:1"
                              }
                            ],
                            "id": 2321,
                            "name": "MemberAccess",
                            "src": "31866:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tick",
                              "referencedDeclaration": 1622,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1742,
                                  "type": "struct MoonwalkerPool.SwapState memory",
                                  "value": "state"
                                },
                                "id": 2322,
                                "name": "Identifier",
                                "src": "31883:5:1"
                              }
                            ],
                            "id": 2323,
                            "name": "MemberAccess",
                            "src": "31883:10:1"
                          }
                        ],
                        "id": 2324,
                        "name": "FunctionCall",
                        "src": "31800:94:1"
                      }
                    ],
                    "id": 2325,
                    "name": "EmitStatement",
                    "src": "31795:99:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "unlocked",
                              "referencedDeclaration": 374,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 2326,
                                "name": "Identifier",
                                "src": "31904:5:1"
                              }
                            ],
                            "id": 2328,
                            "name": "MemberAccess",
                            "src": "31904:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 2329,
                            "name": "Literal",
                            "src": "31921:4:1"
                          }
                        ],
                        "id": 2330,
                        "name": "Assignment",
                        "src": "31904:21:1"
                      }
                    ],
                    "id": 2331,
                    "name": "ExpressionStatement",
                    "src": "31904:21:1"
                  }
                ],
                "id": 2332,
                "name": "Block",
                "src": "23168:8764:1"
              }
            ],
            "id": 2333,
            "name": "FunctionDefinition",
            "src": "22926:9006:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3190
              ],
              "functionSelector": "490e6cbc",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "flash",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolActions"
                },
                "id": 2334,
                "name": "StructuredDocumentation",
                "src": "31938:38:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2344,
                "name": "OverrideSpecifier",
                "src": "32117:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "recipient",
                      "scope": 2578,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2335,
                        "name": "ElementaryTypeName",
                        "src": "32005:7:1"
                      }
                    ],
                    "id": 2336,
                    "name": "VariableDeclaration",
                    "src": "32005:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 2578,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2337,
                        "name": "ElementaryTypeName",
                        "src": "32032:7:1"
                      }
                    ],
                    "id": 2338,
                    "name": "VariableDeclaration",
                    "src": "32032:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 2578,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2339,
                        "name": "ElementaryTypeName",
                        "src": "32057:7:1"
                      }
                    ],
                    "id": 2340,
                    "name": "VariableDeclaration",
                    "src": "32057:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2578,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2341,
                        "name": "ElementaryTypeName",
                        "src": "32082:5:1"
                      }
                    ],
                    "id": 2342,
                    "name": "VariableDeclaration",
                    "src": "32082:19:1"
                  }
                ],
                "id": 2343,
                "name": "ParameterList",
                "src": "31995:112:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2349,
                "name": "ParameterList",
                "src": "32146:0:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 2345,
                    "name": "Identifier",
                    "src": "32126:4:1"
                  }
                ],
                "id": 2346,
                "name": "ModifierInvocation",
                "src": "32126:4:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2863,
                      "type": "modifier ()",
                      "value": "noDelegateCall"
                    },
                    "id": 2347,
                    "name": "Identifier",
                    "src": "32131:14:1"
                  }
                ],
                "id": 2348,
                "name": "ModifierInvocation",
                "src": "32131:14:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2351
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_liquidity",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint128",
                              "type": "uint128"
                            },
                            "id": 2350,
                            "name": "ElementaryTypeName",
                            "src": "32156:7:1"
                          }
                        ],
                        "id": 2351,
                        "name": "VariableDeclaration",
                        "src": "32156:18:1"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 400,
                          "type": "uint128",
                          "value": "liquidity"
                        },
                        "id": 2352,
                        "name": "Identifier",
                        "src": "32177:9:1"
                      }
                    ],
                    "id": 2353,
                    "name": "VariableDeclarationStatement",
                    "src": "32156:30:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                                  "typeString": "literal_string \"L\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2354,
                            "name": "Identifier",
                            "src": "32196:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2351,
                                  "type": "uint128",
                                  "value": "_liquidity"
                                },
                                "id": 2355,
                                "name": "Identifier",
                                "src": "32204:10:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2356,
                                "name": "Literal",
                                "src": "32217:1:1"
                              }
                            ],
                            "id": 2357,
                            "name": "BinaryOperation",
                            "src": "32204:14:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"L\"",
                              "value": "L"
                            },
                            "id": 2358,
                            "name": "Literal",
                            "src": "32220:3:1"
                          }
                        ],
                        "id": 2359,
                        "name": "FunctionCall",
                        "src": "32196:28:1"
                      }
                    ],
                    "id": 2360,
                    "name": "ExpressionStatement",
                    "src": "32196:28:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2362
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "fee0",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2361,
                            "name": "ElementaryTypeName",
                            "src": "32235:7:1"
                          }
                        ],
                        "id": 2362,
                        "name": "VariableDeclaration",
                        "src": "32235:12:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                },
                                {
                                  "typeIdentifier": "t_rational_1000000_by_1",
                                  "typeString": "int_const 1000000"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mulDivRoundingUp",
                              "referencedDeclaration": 3989,
                              "type": "function (uint256,uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3990,
                                  "type": "type(library FullMath)",
                                  "value": "FullMath"
                                },
                                "id": 2363,
                                "name": "Identifier",
                                "src": "32250:8:1"
                              }
                            ],
                            "id": 2364,
                            "name": "MemberAccess",
                            "src": "32250:25:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2338,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 2365,
                            "name": "Identifier",
                            "src": "32276:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 352,
                              "type": "uint24",
                              "value": "fee"
                            },
                            "id": 2366,
                            "name": "Identifier",
                            "src": "32285:3:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "316536",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1000000",
                              "value": "1e6"
                            },
                            "id": 2367,
                            "name": "Literal",
                            "src": "32290:3:1"
                          }
                        ],
                        "id": 2368,
                        "name": "FunctionCall",
                        "src": "32250:44:1"
                      }
                    ],
                    "id": 2369,
                    "name": "VariableDeclarationStatement",
                    "src": "32235:59:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2371
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "fee1",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2370,
                            "name": "ElementaryTypeName",
                            "src": "32304:7:1"
                          }
                        ],
                        "id": 2371,
                        "name": "VariableDeclaration",
                        "src": "32304:12:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                },
                                {
                                  "typeIdentifier": "t_rational_1000000_by_1",
                                  "typeString": "int_const 1000000"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mulDivRoundingUp",
                              "referencedDeclaration": 3989,
                              "type": "function (uint256,uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3990,
                                  "type": "type(library FullMath)",
                                  "value": "FullMath"
                                },
                                "id": 2372,
                                "name": "Identifier",
                                "src": "32319:8:1"
                              }
                            ],
                            "id": 2373,
                            "name": "MemberAccess",
                            "src": "32319:25:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2340,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 2374,
                            "name": "Identifier",
                            "src": "32345:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 352,
                              "type": "uint24",
                              "value": "fee"
                            },
                            "id": 2375,
                            "name": "Identifier",
                            "src": "32354:3:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "316536",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1000000",
                              "value": "1e6"
                            },
                            "id": 2376,
                            "name": "Literal",
                            "src": "32359:3:1"
                          }
                        ],
                        "id": 2377,
                        "name": "FunctionCall",
                        "src": "32319:44:1"
                      }
                    ],
                    "id": 2378,
                    "name": "VariableDeclarationStatement",
                    "src": "32304:59:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2380
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance0Before",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2379,
                            "name": "ElementaryTypeName",
                            "src": "32373:7:1"
                          }
                        ],
                        "id": 2380,
                        "name": "VariableDeclaration",
                        "src": "32373:22:1"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 582,
                              "type": "function () view returns (uint256)",
                              "value": "balance0"
                            },
                            "id": 2381,
                            "name": "Identifier",
                            "src": "32398:8:1"
                          }
                        ],
                        "id": 2382,
                        "name": "FunctionCall",
                        "src": "32398:10:1"
                      }
                    ],
                    "id": 2383,
                    "name": "VariableDeclarationStatement",
                    "src": "32373:35:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2385
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance1Before",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2384,
                            "name": "ElementaryTypeName",
                            "src": "32418:7:1"
                          }
                        ],
                        "id": 2385,
                        "name": "VariableDeclaration",
                        "src": "32418:22:1"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 624,
                              "type": "function () view returns (uint256)",
                              "value": "balance1"
                            },
                            "id": 2386,
                            "name": "Identifier",
                            "src": "32443:8:1"
                          }
                        ],
                        "id": 2387,
                        "name": "FunctionCall",
                        "src": "32443:10:1"
                      }
                    ],
                    "id": 2388,
                    "name": "VariableDeclarationStatement",
                    "src": "32418:35:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2338,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 2389,
                            "name": "Identifier",
                            "src": "32468:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2390,
                            "name": "Literal",
                            "src": "32478:1:1"
                          }
                        ],
                        "id": 2391,
                        "name": "BinaryOperation",
                        "src": "32468:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "safeTransfer",
                                  "referencedDeclaration": 7220,
                                  "type": "function (address,address,uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7221,
                                      "type": "type(library TransferHelper)",
                                      "value": "TransferHelper"
                                    },
                                    "id": 2392,
                                    "name": "Identifier",
                                    "src": "32481:14:1"
                                  }
                                ],
                                "id": 2394,
                                "name": "MemberAccess",
                                "src": "32481:27:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 344,
                                  "type": "address",
                                  "value": "token0"
                                },
                                "id": 2395,
                                "name": "Identifier",
                                "src": "32509:6:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2336,
                                  "type": "address",
                                  "value": "recipient"
                                },
                                "id": 2396,
                                "name": "Identifier",
                                "src": "32517:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2338,
                                  "type": "uint256",
                                  "value": "amount0"
                                },
                                "id": 2397,
                                "name": "Identifier",
                                "src": "32528:7:1"
                              }
                            ],
                            "id": 2398,
                            "name": "FunctionCall",
                            "src": "32481:55:1"
                          }
                        ],
                        "id": 2399,
                        "name": "ExpressionStatement",
                        "src": "32481:55:1"
                      }
                    ],
                    "id": 2400,
                    "name": "IfStatement",
                    "src": "32464:72:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2340,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 2401,
                            "name": "Identifier",
                            "src": "32550:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2402,
                            "name": "Literal",
                            "src": "32560:1:1"
                          }
                        ],
                        "id": 2403,
                        "name": "BinaryOperation",
                        "src": "32550:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "safeTransfer",
                                  "referencedDeclaration": 7220,
                                  "type": "function (address,address,uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7221,
                                      "type": "type(library TransferHelper)",
                                      "value": "TransferHelper"
                                    },
                                    "id": 2404,
                                    "name": "Identifier",
                                    "src": "32563:14:1"
                                  }
                                ],
                                "id": 2406,
                                "name": "MemberAccess",
                                "src": "32563:27:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 348,
                                  "type": "address",
                                  "value": "token1"
                                },
                                "id": 2407,
                                "name": "Identifier",
                                "src": "32591:6:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2336,
                                  "type": "address",
                                  "value": "recipient"
                                },
                                "id": 2408,
                                "name": "Identifier",
                                "src": "32599:9:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2340,
                                  "type": "uint256",
                                  "value": "amount1"
                                },
                                "id": 2409,
                                "name": "Identifier",
                                "src": "32610:7:1"
                              }
                            ],
                            "id": 2410,
                            "name": "FunctionCall",
                            "src": "32563:55:1"
                          }
                        ],
                        "id": 2411,
                        "name": "ExpressionStatement",
                        "src": "32563:55:1"
                      }
                    ],
                    "id": 2412,
                    "name": "IfStatement",
                    "src": "32546:72:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "moonwalkerFlashCallback",
                              "referencedDeclaration": 3072,
                              "type": "function (uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract IMoonwalkerFlashCallback",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3073,
                                      "type": "type(contract IMoonwalkerFlashCallback)",
                                      "value": "IMoonwalkerFlashCallback"
                                    },
                                    "id": 2413,
                                    "name": "Identifier",
                                    "src": "32629:24:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967281,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 2414,
                                        "name": "Identifier",
                                        "src": "32654:3:1"
                                      }
                                    ],
                                    "id": 2415,
                                    "name": "MemberAccess",
                                    "src": "32654:10:1"
                                  }
                                ],
                                "id": 2416,
                                "name": "FunctionCall",
                                "src": "32629:36:1"
                              }
                            ],
                            "id": 2417,
                            "name": "MemberAccess",
                            "src": "32629:60:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2362,
                              "type": "uint256",
                              "value": "fee0"
                            },
                            "id": 2418,
                            "name": "Identifier",
                            "src": "32690:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2371,
                              "type": "uint256",
                              "value": "fee1"
                            },
                            "id": 2419,
                            "name": "Identifier",
                            "src": "32696:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2342,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 2420,
                            "name": "Identifier",
                            "src": "32702:4:1"
                          }
                        ],
                        "id": 2421,
                        "name": "FunctionCall",
                        "src": "32629:78:1"
                      }
                    ],
                    "id": 2422,
                    "name": "ExpressionStatement",
                    "src": "32629:78:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2424
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance0After",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2423,
                            "name": "ElementaryTypeName",
                            "src": "32718:7:1"
                          }
                        ],
                        "id": 2424,
                        "name": "VariableDeclaration",
                        "src": "32718:21:1"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 582,
                              "type": "function () view returns (uint256)",
                              "value": "balance0"
                            },
                            "id": 2425,
                            "name": "Identifier",
                            "src": "32742:8:1"
                          }
                        ],
                        "id": 2426,
                        "name": "FunctionCall",
                        "src": "32742:10:1"
                      }
                    ],
                    "id": 2427,
                    "name": "VariableDeclarationStatement",
                    "src": "32718:34:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2429
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "balance1After",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2428,
                            "name": "ElementaryTypeName",
                            "src": "32762:7:1"
                          }
                        ],
                        "id": 2429,
                        "name": "VariableDeclaration",
                        "src": "32762:21:1"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 624,
                              "type": "function () view returns (uint256)",
                              "value": "balance1"
                            },
                            "id": 2430,
                            "name": "Identifier",
                            "src": "32786:8:1"
                          }
                        ],
                        "id": 2431,
                        "name": "FunctionCall",
                        "src": "32786:10:1"
                      }
                    ],
                    "id": 2432,
                    "name": "VariableDeclarationStatement",
                    "src": "32762:34:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5",
                                  "typeString": "literal_string \"F0\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2433,
                            "name": "Identifier",
                            "src": "32807:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 4067,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2380,
                                          "type": "uint256",
                                          "value": "balance0Before"
                                        },
                                        "id": 2434,
                                        "name": "Identifier",
                                        "src": "32815:14:1"
                                      }
                                    ],
                                    "id": 2435,
                                    "name": "MemberAccess",
                                    "src": "32815:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2362,
                                      "type": "uint256",
                                      "value": "fee0"
                                    },
                                    "id": 2436,
                                    "name": "Identifier",
                                    "src": "32834:4:1"
                                  }
                                ],
                                "id": 2437,
                                "name": "FunctionCall",
                                "src": "32815:24:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2424,
                                  "type": "uint256",
                                  "value": "balance0After"
                                },
                                "id": 2438,
                                "name": "Identifier",
                                "src": "32843:13:1"
                              }
                            ],
                            "id": 2439,
                            "name": "BinaryOperation",
                            "src": "32815:41:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4630",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"F0\"",
                              "value": "F0"
                            },
                            "id": 2440,
                            "name": "Literal",
                            "src": "32858:4:1"
                          }
                        ],
                        "id": 2441,
                        "name": "FunctionCall",
                        "src": "32807:56:1"
                      }
                    ],
                    "id": 2442,
                    "name": "ExpressionStatement",
                    "src": "32807:56:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf",
                                  "typeString": "literal_string \"F1\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2443,
                            "name": "Identifier",
                            "src": "32873:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 4067,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2385,
                                          "type": "uint256",
                                          "value": "balance1Before"
                                        },
                                        "id": 2444,
                                        "name": "Identifier",
                                        "src": "32881:14:1"
                                      }
                                    ],
                                    "id": 2445,
                                    "name": "MemberAccess",
                                    "src": "32881:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2371,
                                      "type": "uint256",
                                      "value": "fee1"
                                    },
                                    "id": 2446,
                                    "name": "Identifier",
                                    "src": "32900:4:1"
                                  }
                                ],
                                "id": 2447,
                                "name": "FunctionCall",
                                "src": "32881:24:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2429,
                                  "type": "uint256",
                                  "value": "balance1After"
                                },
                                "id": 2448,
                                "name": "Identifier",
                                "src": "32909:13:1"
                              }
                            ],
                            "id": 2449,
                            "name": "BinaryOperation",
                            "src": "32881:41:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4631",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"F1\"",
                              "value": "F1"
                            },
                            "id": 2450,
                            "name": "Literal",
                            "src": "32924:4:1"
                          }
                        ],
                        "id": 2451,
                        "name": "FunctionCall",
                        "src": "32873:56:1"
                      }
                    ],
                    "id": 2452,
                    "name": "ExpressionStatement",
                    "src": "32873:56:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2454
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "paid0",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2453,
                            "name": "ElementaryTypeName",
                            "src": "33028:7:1"
                          }
                        ],
                        "id": 2454,
                        "name": "VariableDeclaration",
                        "src": "33028:13:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2424,
                              "type": "uint256",
                              "value": "balance0After"
                            },
                            "id": 2455,
                            "name": "Identifier",
                            "src": "33044:13:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2380,
                              "type": "uint256",
                              "value": "balance0Before"
                            },
                            "id": 2456,
                            "name": "Identifier",
                            "src": "33060:14:1"
                          }
                        ],
                        "id": 2457,
                        "name": "BinaryOperation",
                        "src": "33044:30:1"
                      }
                    ],
                    "id": 2458,
                    "name": "VariableDeclarationStatement",
                    "src": "33028:46:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2460
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "paid1",
                          "scope": 2577,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2459,
                            "name": "ElementaryTypeName",
                            "src": "33084:7:1"
                          }
                        ],
                        "id": 2460,
                        "name": "VariableDeclaration",
                        "src": "33084:13:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2429,
                              "type": "uint256",
                              "value": "balance1After"
                            },
                            "id": 2461,
                            "name": "Identifier",
                            "src": "33100:13:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2385,
                              "type": "uint256",
                              "value": "balance1Before"
                            },
                            "id": 2462,
                            "name": "Identifier",
                            "src": "33116:14:1"
                          }
                        ],
                        "id": 2463,
                        "name": "BinaryOperation",
                        "src": "33100:30:1"
                      }
                    ],
                    "id": 2464,
                    "name": "VariableDeclarationStatement",
                    "src": "33084:46:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2454,
                              "type": "uint256",
                              "value": "paid0"
                            },
                            "id": 2465,
                            "name": "Identifier",
                            "src": "33145:5:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2466,
                            "name": "Literal",
                            "src": "33153:1:1"
                          }
                        ],
                        "id": 2467,
                        "name": "BinaryOperation",
                        "src": "33145:9:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2469
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "feeProtocol0",
                                  "scope": 2514,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint8",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint8",
                                      "type": "uint8"
                                    },
                                    "id": 2468,
                                    "name": "ElementaryTypeName",
                                    "src": "33170:5:1"
                                  }
                                ],
                                "id": 2469,
                                "name": "VariableDeclaration",
                                "src": "33170:18:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "%",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeProtocol",
                                      "referencedDeclaration": 372,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 2470,
                                        "name": "Identifier",
                                        "src": "33191:5:1"
                                      }
                                    ],
                                    "id": 2471,
                                    "name": "MemberAccess",
                                    "src": "33191:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 2472,
                                    "name": "Literal",
                                    "src": "33211:2:1"
                                  }
                                ],
                                "id": 2473,
                                "name": "BinaryOperation",
                                "src": "33191:22:1"
                              }
                            ],
                            "id": 2474,
                            "name": "VariableDeclarationStatement",
                            "src": "33170:43:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2476
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "fees0",
                                  "scope": 2514,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2475,
                                    "name": "ElementaryTypeName",
                                    "src": "33227:7:1"
                                  }
                                ],
                                "id": 2476,
                                "name": "VariableDeclaration",
                                "src": "33227:13:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2469,
                                          "type": "uint8",
                                          "value": "feeProtocol0"
                                        },
                                        "id": 2477,
                                        "name": "Identifier",
                                        "src": "33243:12:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 2478,
                                        "name": "Literal",
                                        "src": "33259:1:1"
                                      }
                                    ],
                                    "id": 2479,
                                    "name": "BinaryOperation",
                                    "src": "33243:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2480,
                                    "name": "Literal",
                                    "src": "33263:1:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "/",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2454,
                                          "type": "uint256",
                                          "value": "paid0"
                                        },
                                        "id": 2481,
                                        "name": "Identifier",
                                        "src": "33267:5:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2469,
                                          "type": "uint8",
                                          "value": "feeProtocol0"
                                        },
                                        "id": 2482,
                                        "name": "Identifier",
                                        "src": "33275:12:1"
                                      }
                                    ],
                                    "id": 2483,
                                    "name": "BinaryOperation",
                                    "src": "33267:20:1"
                                  }
                                ],
                                "id": 2484,
                                "name": "Conditional",
                                "src": "33243:44:1"
                              }
                            ],
                            "id": 2485,
                            "name": "VariableDeclarationStatement",
                            "src": "33227:60:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint128",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint128)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint128"
                                            },
                                            "id": 2486,
                                            "name": "ElementaryTypeName",
                                            "src": "33305:7:1"
                                          }
                                        ],
                                        "id": 2487,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "33305:7:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2476,
                                          "type": "uint256",
                                          "value": "fees0"
                                        },
                                        "id": 2488,
                                        "name": "Identifier",
                                        "src": "33313:5:1"
                                      }
                                    ],
                                    "id": 2489,
                                    "name": "FunctionCall",
                                    "src": "33305:14:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2490,
                                    "name": "Literal",
                                    "src": "33322:1:1"
                                  }
                                ],
                                "id": 2491,
                                "name": "BinaryOperation",
                                "src": "33305:18:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+=",
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "token0",
                                          "referencedDeclaration": 389,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 396,
                                              "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                              "value": "protocolFees"
                                            },
                                            "id": 2492,
                                            "name": "Identifier",
                                            "src": "33325:12:1"
                                          }
                                        ],
                                        "id": 2494,
                                        "name": "MemberAccess",
                                        "src": "33325:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint128",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint128)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint128"
                                                },
                                                "id": 2495,
                                                "name": "ElementaryTypeName",
                                                "src": "33348:7:1"
                                              }
                                            ],
                                            "id": 2496,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "33348:7:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2476,
                                              "type": "uint256",
                                              "value": "fees0"
                                            },
                                            "id": 2497,
                                            "name": "Identifier",
                                            "src": "33356:5:1"
                                          }
                                        ],
                                        "id": 2498,
                                        "name": "FunctionCall",
                                        "src": "33348:14:1"
                                      }
                                    ],
                                    "id": 2499,
                                    "name": "Assignment",
                                    "src": "33325:37:1"
                                  }
                                ],
                                "id": 2500,
                                "name": "ExpressionStatement",
                                "src": "33325:37:1"
                              }
                            ],
                            "id": 2501,
                            "name": "IfStatement",
                            "src": "33301:61:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 383,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal0X128"
                                    },
                                    "id": 2502,
                                    "name": "Identifier",
                                    "src": "33376:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "mulDiv",
                                          "referencedDeclaration": 3946,
                                          "type": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3990,
                                              "type": "type(library FullMath)",
                                              "value": "FullMath"
                                            },
                                            "id": 2503,
                                            "name": "Identifier",
                                            "src": "33400:8:1"
                                          }
                                        ],
                                        "id": 2504,
                                        "name": "MemberAccess",
                                        "src": "33400:15:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2454,
                                              "type": "uint256",
                                              "value": "paid0"
                                            },
                                            "id": 2505,
                                            "name": "Identifier",
                                            "src": "33416:5:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2476,
                                              "type": "uint256",
                                              "value": "fees0"
                                            },
                                            "id": 2506,
                                            "name": "Identifier",
                                            "src": "33424:5:1"
                                          }
                                        ],
                                        "id": 2507,
                                        "name": "BinaryOperation",
                                        "src": "33416:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "Q128",
                                          "referencedDeclaration": 3806,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3807,
                                              "type": "type(library FixedPoint128)",
                                              "value": "FixedPoint128"
                                            },
                                            "id": 2508,
                                            "name": "Identifier",
                                            "src": "33431:13:1"
                                          }
                                        ],
                                        "id": 2509,
                                        "name": "MemberAccess",
                                        "src": "33431:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2351,
                                          "type": "uint128",
                                          "value": "_liquidity"
                                        },
                                        "id": 2510,
                                        "name": "Identifier",
                                        "src": "33451:10:1"
                                      }
                                    ],
                                    "id": 2511,
                                    "name": "FunctionCall",
                                    "src": "33400:62:1"
                                  }
                                ],
                                "id": 2512,
                                "name": "Assignment",
                                "src": "33376:86:1"
                              }
                            ],
                            "id": 2513,
                            "name": "ExpressionStatement",
                            "src": "33376:86:1"
                          }
                        ],
                        "id": 2514,
                        "name": "Block",
                        "src": "33156:317:1"
                      }
                    ],
                    "id": 2515,
                    "name": "IfStatement",
                    "src": "33141:332:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2460,
                              "type": "uint256",
                              "value": "paid1"
                            },
                            "id": 2516,
                            "name": "Identifier",
                            "src": "33486:5:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2517,
                            "name": "Literal",
                            "src": "33494:1:1"
                          }
                        ],
                        "id": 2518,
                        "name": "BinaryOperation",
                        "src": "33486:9:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2520
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "feeProtocol1",
                                  "scope": 2565,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint8",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint8",
                                      "type": "uint8"
                                    },
                                    "id": 2519,
                                    "name": "ElementaryTypeName",
                                    "src": "33511:5:1"
                                  }
                                ],
                                "id": 2520,
                                "name": "VariableDeclaration",
                                "src": "33511:18:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeProtocol",
                                      "referencedDeclaration": 372,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 379,
                                          "type": "struct MoonwalkerPool.Slot0 storage ref",
                                          "value": "slot0"
                                        },
                                        "id": 2521,
                                        "name": "Identifier",
                                        "src": "33532:5:1"
                                      }
                                    ],
                                    "id": 2522,
                                    "name": "MemberAccess",
                                    "src": "33532:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 2523,
                                    "name": "Literal",
                                    "src": "33553:1:1"
                                  }
                                ],
                                "id": 2524,
                                "name": "BinaryOperation",
                                "src": "33532:22:1"
                              }
                            ],
                            "id": 2525,
                            "name": "VariableDeclarationStatement",
                            "src": "33511:43:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2527
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "fees1",
                                  "scope": 2565,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2526,
                                    "name": "ElementaryTypeName",
                                    "src": "33568:7:1"
                                  }
                                ],
                                "id": 2527,
                                "name": "VariableDeclaration",
                                "src": "33568:13:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2520,
                                          "type": "uint8",
                                          "value": "feeProtocol1"
                                        },
                                        "id": 2528,
                                        "name": "Identifier",
                                        "src": "33584:12:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 2529,
                                        "name": "Literal",
                                        "src": "33600:1:1"
                                      }
                                    ],
                                    "id": 2530,
                                    "name": "BinaryOperation",
                                    "src": "33584:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2531,
                                    "name": "Literal",
                                    "src": "33604:1:1"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "/",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2460,
                                          "type": "uint256",
                                          "value": "paid1"
                                        },
                                        "id": 2532,
                                        "name": "Identifier",
                                        "src": "33608:5:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2520,
                                          "type": "uint8",
                                          "value": "feeProtocol1"
                                        },
                                        "id": 2533,
                                        "name": "Identifier",
                                        "src": "33616:12:1"
                                      }
                                    ],
                                    "id": 2534,
                                    "name": "BinaryOperation",
                                    "src": "33608:20:1"
                                  }
                                ],
                                "id": 2535,
                                "name": "Conditional",
                                "src": "33584:44:1"
                              }
                            ],
                            "id": 2536,
                            "name": "VariableDeclarationStatement",
                            "src": "33568:60:1"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint128",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint128)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint128"
                                            },
                                            "id": 2537,
                                            "name": "ElementaryTypeName",
                                            "src": "33646:7:1"
                                          }
                                        ],
                                        "id": 2538,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "33646:7:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2527,
                                          "type": "uint256",
                                          "value": "fees1"
                                        },
                                        "id": 2539,
                                        "name": "Identifier",
                                        "src": "33654:5:1"
                                      }
                                    ],
                                    "id": 2540,
                                    "name": "FunctionCall",
                                    "src": "33646:14:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2541,
                                    "name": "Literal",
                                    "src": "33663:1:1"
                                  }
                                ],
                                "id": 2542,
                                "name": "BinaryOperation",
                                "src": "33646:18:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+=",
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "token1",
                                          "referencedDeclaration": 391,
                                          "type": "uint128"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 396,
                                              "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                              "value": "protocolFees"
                                            },
                                            "id": 2543,
                                            "name": "Identifier",
                                            "src": "33666:12:1"
                                          }
                                        ],
                                        "id": 2545,
                                        "name": "MemberAccess",
                                        "src": "33666:19:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint128",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint128)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint128"
                                                },
                                                "id": 2546,
                                                "name": "ElementaryTypeName",
                                                "src": "33689:7:1"
                                              }
                                            ],
                                            "id": 2547,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "33689:7:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2527,
                                              "type": "uint256",
                                              "value": "fees1"
                                            },
                                            "id": 2548,
                                            "name": "Identifier",
                                            "src": "33697:5:1"
                                          }
                                        ],
                                        "id": 2549,
                                        "name": "FunctionCall",
                                        "src": "33689:14:1"
                                      }
                                    ],
                                    "id": 2550,
                                    "name": "Assignment",
                                    "src": "33666:37:1"
                                  }
                                ],
                                "id": 2551,
                                "name": "ExpressionStatement",
                                "src": "33666:37:1"
                              }
                            ],
                            "id": 2552,
                            "name": "IfStatement",
                            "src": "33642:61:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 387,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal1X128"
                                    },
                                    "id": 2553,
                                    "name": "Identifier",
                                    "src": "33717:20:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "mulDiv",
                                          "referencedDeclaration": 3946,
                                          "type": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3990,
                                              "type": "type(library FullMath)",
                                              "value": "FullMath"
                                            },
                                            "id": 2554,
                                            "name": "Identifier",
                                            "src": "33741:8:1"
                                          }
                                        ],
                                        "id": 2555,
                                        "name": "MemberAccess",
                                        "src": "33741:15:1"
                                      },
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2460,
                                              "type": "uint256",
                                              "value": "paid1"
                                            },
                                            "id": 2556,
                                            "name": "Identifier",
                                            "src": "33757:5:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2527,
                                              "type": "uint256",
                                              "value": "fees1"
                                            },
                                            "id": 2557,
                                            "name": "Identifier",
                                            "src": "33765:5:1"
                                          }
                                        ],
                                        "id": 2558,
                                        "name": "BinaryOperation",
                                        "src": "33757:13:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "Q128",
                                          "referencedDeclaration": 3806,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3807,
                                              "type": "type(library FixedPoint128)",
                                              "value": "FixedPoint128"
                                            },
                                            "id": 2559,
                                            "name": "Identifier",
                                            "src": "33772:13:1"
                                          }
                                        ],
                                        "id": 2560,
                                        "name": "MemberAccess",
                                        "src": "33772:18:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2351,
                                          "type": "uint128",
                                          "value": "_liquidity"
                                        },
                                        "id": 2561,
                                        "name": "Identifier",
                                        "src": "33792:10:1"
                                      }
                                    ],
                                    "id": 2562,
                                    "name": "FunctionCall",
                                    "src": "33741:62:1"
                                  }
                                ],
                                "id": 2563,
                                "name": "Assignment",
                                "src": "33717:86:1"
                              }
                            ],
                            "id": 2564,
                            "name": "ExpressionStatement",
                            "src": "33717:86:1"
                          }
                        ],
                        "id": 2565,
                        "name": "Block",
                        "src": "33497:317:1"
                      }
                    ],
                    "id": 2566,
                    "name": "IfStatement",
                    "src": "33482:332:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3317,
                              "type": "function (address,address,uint256,uint256,uint256,uint256)",
                              "value": "Flash"
                            },
                            "id": 2567,
                            "name": "Identifier",
                            "src": "33829:5:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 2568,
                                "name": "Identifier",
                                "src": "33835:3:1"
                              }
                            ],
                            "id": 2569,
                            "name": "MemberAccess",
                            "src": "33835:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2336,
                              "type": "address",
                              "value": "recipient"
                            },
                            "id": 2570,
                            "name": "Identifier",
                            "src": "33847:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2338,
                              "type": "uint256",
                              "value": "amount0"
                            },
                            "id": 2571,
                            "name": "Identifier",
                            "src": "33858:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2340,
                              "type": "uint256",
                              "value": "amount1"
                            },
                            "id": 2572,
                            "name": "Identifier",
                            "src": "33867:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2454,
                              "type": "uint256",
                              "value": "paid0"
                            },
                            "id": 2573,
                            "name": "Identifier",
                            "src": "33876:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2460,
                              "type": "uint256",
                              "value": "paid1"
                            },
                            "id": 2574,
                            "name": "Identifier",
                            "src": "33883:5:1"
                          }
                        ],
                        "id": 2575,
                        "name": "FunctionCall",
                        "src": "33829:60:1"
                      }
                    ],
                    "id": 2576,
                    "name": "EmitStatement",
                    "src": "33824:65:1"
                  }
                ],
                "id": 2577,
                "name": "Block",
                "src": "32146:1750:1"
              }
            ],
            "id": 2578,
            "name": "FunctionDefinition",
            "src": "31981:1915:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3398
              ],
              "functionSelector": "8206a4d1",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setFeeProtocol",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolOwnerActions"
                },
                "id": 2579,
                "name": "StructuredDocumentation",
                "src": "33902:43:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2585,
                "name": "OverrideSpecifier",
                "src": "34023:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeProtocol0",
                      "scope": 2649,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 2580,
                        "name": "ElementaryTypeName",
                        "src": "33974:5:1"
                      }
                    ],
                    "id": 2581,
                    "name": "VariableDeclaration",
                    "src": "33974:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeProtocol1",
                      "scope": 2649,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 2582,
                        "name": "ElementaryTypeName",
                        "src": "33994:5:1"
                      }
                    ],
                    "id": 2583,
                    "name": "VariableDeclaration",
                    "src": "33994:18:1"
                  }
                ],
                "id": 2584,
                "name": "ParameterList",
                "src": "33973:40:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2590,
                "name": "ParameterList",
                "src": "34054:0:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 2586,
                    "name": "Identifier",
                    "src": "34032:4:1"
                  }
                ],
                "id": 2587,
                "name": "ModifierInvocation",
                "src": "34032:4:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 463,
                      "type": "modifier ()",
                      "value": "onlyFactoryOwner"
                    },
                    "id": 2588,
                    "name": "Identifier",
                    "src": "34037:16:1"
                  }
                ],
                "id": 2589,
                "name": "ModifierInvocation",
                "src": "34037:16:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2591,
                            "name": "Identifier",
                            "src": "34064:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "||",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2581,
                                              "type": "uint8",
                                              "value": "feeProtocol0"
                                            },
                                            "id": 2592,
                                            "name": "Identifier",
                                            "src": "34086:12:1"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 2593,
                                            "name": "Literal",
                                            "src": "34102:1:1"
                                          }
                                        ],
                                        "id": 2594,
                                        "name": "BinaryOperation",
                                        "src": "34086:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&&",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": ">=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2581,
                                                      "type": "uint8",
                                                      "value": "feeProtocol0"
                                                    },
                                                    "id": 2595,
                                                    "name": "Identifier",
                                                    "src": "34108:12:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "34",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 4",
                                                      "value": "4"
                                                    },
                                                    "id": 2596,
                                                    "name": "Literal",
                                                    "src": "34124:1:1"
                                                  }
                                                ],
                                                "id": 2597,
                                                "name": "BinaryOperation",
                                                "src": "34108:17:1"
                                              },
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "<=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2581,
                                                      "type": "uint8",
                                                      "value": "feeProtocol0"
                                                    },
                                                    "id": 2598,
                                                    "name": "Identifier",
                                                    "src": "34129:12:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "3130",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 10",
                                                      "value": "10"
                                                    },
                                                    "id": 2599,
                                                    "name": "Literal",
                                                    "src": "34145:2:1"
                                                  }
                                                ],
                                                "id": 2600,
                                                "name": "BinaryOperation",
                                                "src": "34129:18:1"
                                              }
                                            ],
                                            "id": 2601,
                                            "name": "BinaryOperation",
                                            "src": "34108:39:1"
                                          }
                                        ],
                                        "id": 2602,
                                        "name": "TupleExpression",
                                        "src": "34107:41:1"
                                      }
                                    ],
                                    "id": 2603,
                                    "name": "BinaryOperation",
                                    "src": "34086:62:1"
                                  }
                                ],
                                "id": 2604,
                                "name": "TupleExpression",
                                "src": "34085:64:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "||",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2583,
                                              "type": "uint8",
                                              "value": "feeProtocol1"
                                            },
                                            "id": 2605,
                                            "name": "Identifier",
                                            "src": "34170:12:1"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 2606,
                                            "name": "Literal",
                                            "src": "34186:1:1"
                                          }
                                        ],
                                        "id": 2607,
                                        "name": "BinaryOperation",
                                        "src": "34170:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&&",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": ">=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2583,
                                                      "type": "uint8",
                                                      "value": "feeProtocol1"
                                                    },
                                                    "id": 2608,
                                                    "name": "Identifier",
                                                    "src": "34192:12:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "34",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 4",
                                                      "value": "4"
                                                    },
                                                    "id": 2609,
                                                    "name": "Literal",
                                                    "src": "34208:1:1"
                                                  }
                                                ],
                                                "id": 2610,
                                                "name": "BinaryOperation",
                                                "src": "34192:17:1"
                                              },
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "<=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2583,
                                                      "type": "uint8",
                                                      "value": "feeProtocol1"
                                                    },
                                                    "id": 2611,
                                                    "name": "Identifier",
                                                    "src": "34213:12:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "3130",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 10",
                                                      "value": "10"
                                                    },
                                                    "id": 2612,
                                                    "name": "Literal",
                                                    "src": "34229:2:1"
                                                  }
                                                ],
                                                "id": 2613,
                                                "name": "BinaryOperation",
                                                "src": "34213:18:1"
                                              }
                                            ],
                                            "id": 2614,
                                            "name": "BinaryOperation",
                                            "src": "34192:39:1"
                                          }
                                        ],
                                        "id": 2615,
                                        "name": "TupleExpression",
                                        "src": "34191:41:1"
                                      }
                                    ],
                                    "id": 2616,
                                    "name": "BinaryOperation",
                                    "src": "34170:62:1"
                                  }
                                ],
                                "id": 2617,
                                "name": "TupleExpression",
                                "src": "34169:64:1"
                              }
                            ],
                            "id": 2618,
                            "name": "BinaryOperation",
                            "src": "34085:148:1"
                          }
                        ],
                        "id": 2619,
                        "name": "FunctionCall",
                        "src": "34064:179:1"
                      }
                    ],
                    "id": 2620,
                    "name": "ExpressionStatement",
                    "src": "34064:179:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2622
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeProtocolOld",
                          "scope": 2648,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 2621,
                            "name": "ElementaryTypeName",
                            "src": "34253:5:1"
                          }
                        ],
                        "id": 2622,
                        "name": "VariableDeclaration",
                        "src": "34253:20:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "feeProtocol",
                          "referencedDeclaration": 372,
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 379,
                              "type": "struct MoonwalkerPool.Slot0 storage ref",
                              "value": "slot0"
                            },
                            "id": 2623,
                            "name": "Identifier",
                            "src": "34276:5:1"
                          }
                        ],
                        "id": 2624,
                        "name": "MemberAccess",
                        "src": "34276:17:1"
                      }
                    ],
                    "id": 2625,
                    "name": "VariableDeclarationStatement",
                    "src": "34253:40:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "feeProtocol",
                              "referencedDeclaration": 372,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 379,
                                  "type": "struct MoonwalkerPool.Slot0 storage ref",
                                  "value": "slot0"
                                },
                                "id": 2626,
                                "name": "Identifier",
                                "src": "34303:5:1"
                              }
                            ],
                            "id": 2628,
                            "name": "MemberAccess",
                            "src": "34303:17:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2581,
                                  "type": "uint8",
                                  "value": "feeProtocol0"
                                },
                                "id": 2629,
                                "name": "Identifier",
                                "src": "34323:12:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<<",
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2583,
                                          "type": "uint8",
                                          "value": "feeProtocol1"
                                        },
                                        "id": 2630,
                                        "name": "Identifier",
                                        "src": "34339:12:1"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "34",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 4",
                                          "value": "4"
                                        },
                                        "id": 2631,
                                        "name": "Literal",
                                        "src": "34355:1:1"
                                      }
                                    ],
                                    "id": 2632,
                                    "name": "BinaryOperation",
                                    "src": "34339:17:1"
                                  }
                                ],
                                "id": 2633,
                                "name": "TupleExpression",
                                "src": "34338:19:1"
                              }
                            ],
                            "id": 2634,
                            "name": "BinaryOperation",
                            "src": "34323:34:1"
                          }
                        ],
                        "id": 2635,
                        "name": "Assignment",
                        "src": "34303:54:1"
                      }
                    ],
                    "id": 2636,
                    "name": "ExpressionStatement",
                    "src": "34303:54:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3335,
                              "type": "function (uint8,uint8,uint8,uint8)",
                              "value": "SetFeeProtocol"
                            },
                            "id": 2637,
                            "name": "Identifier",
                            "src": "34372:14:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "%",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2622,
                                  "type": "uint8",
                                  "value": "feeProtocolOld"
                                },
                                "id": 2638,
                                "name": "Identifier",
                                "src": "34387:14:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "3136",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 16",
                                  "value": "16"
                                },
                                "id": 2639,
                                "name": "Literal",
                                "src": "34404:2:1"
                              }
                            ],
                            "id": 2640,
                            "name": "BinaryOperation",
                            "src": "34387:19:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">>",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2622,
                                  "type": "uint8",
                                  "value": "feeProtocolOld"
                                },
                                "id": 2641,
                                "name": "Identifier",
                                "src": "34408:14:1"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "34",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "4"
                                },
                                "id": 2642,
                                "name": "Literal",
                                "src": "34426:1:1"
                              }
                            ],
                            "id": 2643,
                            "name": "BinaryOperation",
                            "src": "34408:19:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2581,
                              "type": "uint8",
                              "value": "feeProtocol0"
                            },
                            "id": 2644,
                            "name": "Identifier",
                            "src": "34429:12:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2583,
                              "type": "uint8",
                              "value": "feeProtocol1"
                            },
                            "id": 2645,
                            "name": "Identifier",
                            "src": "34443:12:1"
                          }
                        ],
                        "id": 2646,
                        "name": "FunctionCall",
                        "src": "34372:84:1"
                      }
                    ],
                    "id": 2647,
                    "name": "EmitStatement",
                    "src": "34367:89:1"
                  }
                ],
                "id": 2648,
                "name": "Block",
                "src": "34054:409:1"
              }
            ],
            "id": 2649,
            "name": "FunctionDefinition",
            "src": "33950:513:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                3412
              ],
              "functionSelector": "85b66729",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "collectProtocol",
              "scope": 2754,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@inheritdoc IMoonwalkerPoolOwnerActions"
                },
                "id": 2650,
                "name": "StructuredDocumentation",
                "src": "34469:43:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2658,
                "name": "OverrideSpecifier",
                "src": "34652:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "recipient",
                      "scope": 2753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2651,
                        "name": "ElementaryTypeName",
                        "src": "34551:7:1"
                      }
                    ],
                    "id": 2652,
                    "name": "VariableDeclaration",
                    "src": "34551:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0Requested",
                      "scope": 2753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 2653,
                        "name": "ElementaryTypeName",
                        "src": "34578:7:1"
                      }
                    ],
                    "id": 2654,
                    "name": "VariableDeclaration",
                    "src": "34578:24:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1Requested",
                      "scope": 2753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 2655,
                        "name": "ElementaryTypeName",
                        "src": "34612:7:1"
                      }
                    ],
                    "id": 2656,
                    "name": "VariableDeclaration",
                    "src": "34612:24:1"
                  }
                ],
                "id": 2657,
                "name": "ParameterList",
                "src": "34541:101:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "scope": 2753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 2663,
                        "name": "ElementaryTypeName",
                        "src": "34692:7:1"
                      }
                    ],
                    "id": 2664,
                    "name": "VariableDeclaration",
                    "src": "34692:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "scope": 2753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 2665,
                        "name": "ElementaryTypeName",
                        "src": "34709:7:1"
                      }
                    ],
                    "id": 2666,
                    "name": "VariableDeclaration",
                    "src": "34709:15:1"
                  }
                ],
                "id": 2667,
                "name": "ParameterList",
                "src": "34691:34:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 447,
                      "type": "modifier ()",
                      "value": "lock"
                    },
                    "id": 2659,
                    "name": "Identifier",
                    "src": "34661:4:1"
                  }
                ],
                "id": 2660,
                "name": "ModifierInvocation",
                "src": "34661:4:1"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 463,
                      "type": "modifier ()",
                      "value": "onlyFactoryOwner"
                    },
                    "id": 2661,
                    "name": "Identifier",
                    "src": "34666:16:1"
                  }
                ],
                "id": 2662,
                "name": "ModifierInvocation",
                "src": "34666:16:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 2668,
                            "name": "Identifier",
                            "src": "34736:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2654,
                                      "type": "uint128",
                                      "value": "amount0Requested"
                                    },
                                    "id": 2669,
                                    "name": "Identifier",
                                    "src": "34746:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "token0",
                                      "referencedDeclaration": 389,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2670,
                                        "name": "Identifier",
                                        "src": "34765:12:1"
                                      }
                                    ],
                                    "id": 2671,
                                    "name": "MemberAccess",
                                    "src": "34765:19:1"
                                  }
                                ],
                                "id": 2672,
                                "name": "BinaryOperation",
                                "src": "34746:38:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "token0",
                                  "referencedDeclaration": 389,
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 396,
                                      "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                      "value": "protocolFees"
                                    },
                                    "id": 2673,
                                    "name": "Identifier",
                                    "src": "34787:12:1"
                                  }
                                ],
                                "id": 2674,
                                "name": "MemberAccess",
                                "src": "34787:19:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2654,
                                  "type": "uint128",
                                  "value": "amount0Requested"
                                },
                                "id": 2675,
                                "name": "Identifier",
                                "src": "34809:16:1"
                              }
                            ],
                            "id": 2676,
                            "name": "Conditional",
                            "src": "34746:79:1"
                          }
                        ],
                        "id": 2677,
                        "name": "Assignment",
                        "src": "34736:89:1"
                      }
                    ],
                    "id": 2678,
                    "name": "ExpressionStatement",
                    "src": "34736:89:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2666,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 2679,
                            "name": "Identifier",
                            "src": "34835:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2656,
                                      "type": "uint128",
                                      "value": "amount1Requested"
                                    },
                                    "id": 2680,
                                    "name": "Identifier",
                                    "src": "34845:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "token1",
                                      "referencedDeclaration": 391,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2681,
                                        "name": "Identifier",
                                        "src": "34864:12:1"
                                      }
                                    ],
                                    "id": 2682,
                                    "name": "MemberAccess",
                                    "src": "34864:19:1"
                                  }
                                ],
                                "id": 2683,
                                "name": "BinaryOperation",
                                "src": "34845:38:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "token1",
                                  "referencedDeclaration": 391,
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 396,
                                      "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                      "value": "protocolFees"
                                    },
                                    "id": 2684,
                                    "name": "Identifier",
                                    "src": "34886:12:1"
                                  }
                                ],
                                "id": 2685,
                                "name": "MemberAccess",
                                "src": "34886:19:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2656,
                                  "type": "uint128",
                                  "value": "amount1Requested"
                                },
                                "id": 2686,
                                "name": "Identifier",
                                "src": "34908:16:1"
                              }
                            ],
                            "id": 2687,
                            "name": "Conditional",
                            "src": "34845:79:1"
                          }
                        ],
                        "id": 2688,
                        "name": "Assignment",
                        "src": "34835:89:1"
                      }
                    ],
                    "id": 2689,
                    "name": "ExpressionStatement",
                    "src": "34835:89:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 2690,
                            "name": "Identifier",
                            "src": "34939:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2691,
                            "name": "Literal",
                            "src": "34949:1:1"
                          }
                        ],
                        "id": 2692,
                        "name": "BinaryOperation",
                        "src": "34939:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2664,
                                      "type": "uint128",
                                      "value": "amount0"
                                    },
                                    "id": 2693,
                                    "name": "Identifier",
                                    "src": "34970:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "token0",
                                      "referencedDeclaration": 389,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2694,
                                        "name": "Identifier",
                                        "src": "34981:12:1"
                                      }
                                    ],
                                    "id": 2695,
                                    "name": "MemberAccess",
                                    "src": "34981:19:1"
                                  }
                                ],
                                "id": 2696,
                                "name": "BinaryOperation",
                                "src": "34970:30:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "--",
                                      "prefix": false,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2664,
                                          "type": "uint128",
                                          "value": "amount0"
                                        },
                                        "id": 2697,
                                        "name": "Identifier",
                                        "src": "35002:7:1"
                                      }
                                    ],
                                    "id": 2698,
                                    "name": "UnaryOperation",
                                    "src": "35002:9:1"
                                  }
                                ],
                                "id": 2699,
                                "name": "ExpressionStatement",
                                "src": "35002:9:1"
                              }
                            ],
                            "id": 2700,
                            "name": "IfStatement",
                            "src": "34966:45:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "token0",
                                      "referencedDeclaration": 389,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2701,
                                        "name": "Identifier",
                                        "src": "35081:12:1"
                                      }
                                    ],
                                    "id": 2703,
                                    "name": "MemberAccess",
                                    "src": "35081:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2664,
                                      "type": "uint128",
                                      "value": "amount0"
                                    },
                                    "id": 2704,
                                    "name": "Identifier",
                                    "src": "35104:7:1"
                                  }
                                ],
                                "id": 2705,
                                "name": "Assignment",
                                "src": "35081:30:1"
                              }
                            ],
                            "id": 2706,
                            "name": "ExpressionStatement",
                            "src": "35081:30:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeTransfer",
                                      "referencedDeclaration": 7220,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7221,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 2707,
                                        "name": "Identifier",
                                        "src": "35125:14:1"
                                      }
                                    ],
                                    "id": 2709,
                                    "name": "MemberAccess",
                                    "src": "35125:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 344,
                                      "type": "address",
                                      "value": "token0"
                                    },
                                    "id": 2710,
                                    "name": "Identifier",
                                    "src": "35153:6:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2652,
                                      "type": "address",
                                      "value": "recipient"
                                    },
                                    "id": 2711,
                                    "name": "Identifier",
                                    "src": "35161:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2664,
                                      "type": "uint128",
                                      "value": "amount0"
                                    },
                                    "id": 2712,
                                    "name": "Identifier",
                                    "src": "35172:7:1"
                                  }
                                ],
                                "id": 2713,
                                "name": "FunctionCall",
                                "src": "35125:55:1"
                              }
                            ],
                            "id": 2714,
                            "name": "ExpressionStatement",
                            "src": "35125:55:1"
                          }
                        ],
                        "id": 2715,
                        "name": "Block",
                        "src": "34952:239:1"
                      }
                    ],
                    "id": 2716,
                    "name": "IfStatement",
                    "src": "34935:256:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2666,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 2717,
                            "name": "Identifier",
                            "src": "35204:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2718,
                            "name": "Literal",
                            "src": "35214:1:1"
                          }
                        ],
                        "id": 2719,
                        "name": "BinaryOperation",
                        "src": "35204:11:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2666,
                                      "type": "uint128",
                                      "value": "amount1"
                                    },
                                    "id": 2720,
                                    "name": "Identifier",
                                    "src": "35235:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "token1",
                                      "referencedDeclaration": 391,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2721,
                                        "name": "Identifier",
                                        "src": "35246:12:1"
                                      }
                                    ],
                                    "id": 2722,
                                    "name": "MemberAccess",
                                    "src": "35246:19:1"
                                  }
                                ],
                                "id": 2723,
                                "name": "BinaryOperation",
                                "src": "35235:30:1"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "--",
                                      "prefix": false,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2666,
                                          "type": "uint128",
                                          "value": "amount1"
                                        },
                                        "id": 2724,
                                        "name": "Identifier",
                                        "src": "35267:7:1"
                                      }
                                    ],
                                    "id": 2725,
                                    "name": "UnaryOperation",
                                    "src": "35267:9:1"
                                  }
                                ],
                                "id": 2726,
                                "name": "ExpressionStatement",
                                "src": "35267:9:1"
                              }
                            ],
                            "id": 2727,
                            "name": "IfStatement",
                            "src": "35231:45:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "token1",
                                      "referencedDeclaration": 391,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 396,
                                          "type": "struct MoonwalkerPool.ProtocolFees storage ref",
                                          "value": "protocolFees"
                                        },
                                        "id": 2728,
                                        "name": "Identifier",
                                        "src": "35346:12:1"
                                      }
                                    ],
                                    "id": 2730,
                                    "name": "MemberAccess",
                                    "src": "35346:19:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2666,
                                      "type": "uint128",
                                      "value": "amount1"
                                    },
                                    "id": 2731,
                                    "name": "Identifier",
                                    "src": "35369:7:1"
                                  }
                                ],
                                "id": 2732,
                                "name": "Assignment",
                                "src": "35346:30:1"
                              }
                            ],
                            "id": 2733,
                            "name": "ExpressionStatement",
                            "src": "35346:30:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeTransfer",
                                      "referencedDeclaration": 7220,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7221,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 2734,
                                        "name": "Identifier",
                                        "src": "35390:14:1"
                                      }
                                    ],
                                    "id": 2736,
                                    "name": "MemberAccess",
                                    "src": "35390:27:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 348,
                                      "type": "address",
                                      "value": "token1"
                                    },
                                    "id": 2737,
                                    "name": "Identifier",
                                    "src": "35418:6:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2652,
                                      "type": "address",
                                      "value": "recipient"
                                    },
                                    "id": 2738,
                                    "name": "Identifier",
                                    "src": "35426:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2666,
                                      "type": "uint128",
                                      "value": "amount1"
                                    },
                                    "id": 2739,
                                    "name": "Identifier",
                                    "src": "35437:7:1"
                                  }
                                ],
                                "id": 2740,
                                "name": "FunctionCall",
                                "src": "35390:55:1"
                              }
                            ],
                            "id": 2741,
                            "name": "ExpressionStatement",
                            "src": "35390:55:1"
                          }
                        ],
                        "id": 2742,
                        "name": "Block",
                        "src": "35217:239:1"
                      }
                    ],
                    "id": 2743,
                    "name": "IfStatement",
                    "src": "35200:256:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3346,
                              "type": "function (address,address,uint128,uint128)",
                              "value": "CollectProtocol"
                            },
                            "id": 2744,
                            "name": "Identifier",
                            "src": "35471:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 2745,
                                "name": "Identifier",
                                "src": "35487:3:1"
                              }
                            ],
                            "id": 2746,
                            "name": "MemberAccess",
                            "src": "35487:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2652,
                              "type": "address",
                              "value": "recipient"
                            },
                            "id": 2747,
                            "name": "Identifier",
                            "src": "35499:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "uint128",
                              "value": "amount0"
                            },
                            "id": 2748,
                            "name": "Identifier",
                            "src": "35510:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2666,
                              "type": "uint128",
                              "value": "amount1"
                            },
                            "id": 2749,
                            "name": "Identifier",
                            "src": "35519:7:1"
                          }
                        ],
                        "id": 2750,
                        "name": "FunctionCall",
                        "src": "35471:56:1"
                      }
                    ],
                    "id": 2751,
                    "name": "EmitStatement",
                    "src": "35466:61:1"
                  }
                ],
                "id": 2752,
                "name": "Block",
                "src": "34726:808:1"
              }
            ],
            "id": 2753,
            "name": "FunctionDefinition",
            "src": "34517:1017:1"
          }
        ],
        "id": 2754,
        "name": "ContractDefinition",
        "src": "929:34607:1"
      }
    ],
    "id": 2755,
    "name": "SourceUnit",
    "src": "32:35505:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2022-01-17T20:05:41.641Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "burn(int24,int24,uint128)": {
        "details": "noDelegateCall is applied indirectly via _modifyPosition",
        "params": {
          "amount": "How much liquidity to burn",
          "tickLower": "The lower tick of the position for which to burn liquidity",
          "tickUpper": "The upper tick of the position for which to burn liquidity"
        },
        "returns": {
          "amount0": "The amount of token0 sent to the recipient",
          "amount1": "The amount of token1 sent to the recipient"
        }
      },
      "collect(address,int24,int24,uint128,uint128)": {
        "details": "Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.",
        "params": {
          "amount0Requested": "How much token0 should be withdrawn from the fees owed",
          "amount1Requested": "How much token1 should be withdrawn from the fees owed",
          "recipient": "The address which should receive the fees collected",
          "tickLower": "The lower tick of the position for which to collect fees",
          "tickUpper": "The upper tick of the position for which to collect fees"
        },
        "returns": {
          "amount0": "The amount of fees collected in token0",
          "amount1": "The amount of fees collected in token1"
        }
      },
      "collectProtocol(address,uint128,uint128)": {
        "params": {
          "amount0Requested": "The maximum amount of token0 to send, can be 0 to collect fees in only token1",
          "amount1Requested": "The maximum amount of token1 to send, can be 0 to collect fees in only token0",
          "recipient": "The address to which collected protocol fees should be sent"
        },
        "returns": {
          "amount0": "The protocol fee collected in token0",
          "amount1": "The protocol fee collected in token1"
        }
      },
      "flash(address,uint256,uint256,bytes)": {
        "details": "The caller of this method receives a callback in the form of IMoonwalkerFlashCallback#moonwalkerFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback",
        "params": {
          "amount0": "The amount of token0 to send",
          "amount1": "The amount of token1 to send",
          "data": "Any data to be passed through to the callback",
          "recipient": "The address which will receive the token0 and token1 amounts"
        }
      },
      "increaseObservationCardinalityNext(uint16)": {
        "details": "This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.",
        "params": {
          "observationCardinalityNext": "The desired minimum number of observations for the pool to store"
        }
      },
      "initialize(uint160)": {
        "details": "not locked because it initializes unlocked",
        "params": {
          "sqrtPriceX96": "the initial sqrt price of the pool as a Q64.96"
        }
      },
      "mint(address,int24,int24,uint128,bytes)": {
        "details": "noDelegateCall is applied indirectly via _modifyPosition",
        "params": {
          "amount": "The amount of liquidity to mint",
          "data": "Any data that should be passed through to the callback",
          "recipient": "The address for which the liquidity will be created",
          "tickLower": "The lower tick of the position in which to add liquidity",
          "tickUpper": "The upper tick of the position in which to add liquidity"
        },
        "returns": {
          "amount0": "The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback",
          "amount1": "The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"
        }
      },
      "observe(uint32[])": {
        "details": "To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.",
        "params": {
          "secondsAgos": "From how long ago each cumulative tick and liquidity value should be returned"
        },
        "returns": {
          "secondsPerLiquidityCumulativeX128s": "Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp",
          "tickCumulatives": "Cumulative tick values as of each `secondsAgos` from the current block timestamp"
        }
      },
      "setFeeProtocol(uint8,uint8)": {
        "params": {
          "feeProtocol0": "new protocol fee for token0 of the pool",
          "feeProtocol1": "new protocol fee for token1 of the pool"
        }
      },
      "snapshotCumulativesInside(int24,int24)": {
        "details": "Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.",
        "params": {
          "tickLower": "The lower tick of the range",
          "tickUpper": "The upper tick of the range"
        },
        "returns": {
          "secondsInside": "The snapshot of seconds per liquidity for the range",
          "secondsPerLiquidityInsideX128": "The snapshot of seconds per liquidity for the range",
          "tickCumulativeInside": "The snapshot of the tick accumulator for the range"
        }
      },
      "swap(address,bool,int256,uint160,bytes)": {
        "details": "The caller of this method receives a callback in the form of IMoonwalkerSwapCallback#moonwalkerSwapCallback",
        "params": {
          "amountSpecified": "The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)",
          "data": "Any data to be passed through to the callback",
          "recipient": "The address to receive the output of the swap",
          "sqrtPriceLimitX96": "The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap",
          "zeroForOne": "The direction of the swap, true for token0 to token1, false for token1 to token0"
        },
        "returns": {
          "amount0": "The delta of the balance of token0 of the pool, exact when negative, minimum when positive",
          "amount1": "The delta of the balance of token1 of the pool, exact when negative, minimum when positive"
        }
      }
    },
    "stateVariables": {
      "factory": {
        "return": "The contract address"
      },
      "fee": {
        "return": "The fee"
      },
      "feeGrowthGlobal0X128": {
        "details": "This value can overflow the uint256"
      },
      "feeGrowthGlobal1X128": {
        "details": "This value can overflow the uint256"
      },
      "liquidity": {
        "details": "This value has no relationship to the total liquidity across all ticks"
      },
      "maxLiquidityPerTick": {
        "details": "This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool",
        "return": "The max amount of liquidity per tick"
      },
      "observations": {
        "details": "You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.",
        "params": {
          "index": "The element of the observations array to fetch"
        },
        "return": "blockTimestamp The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use"
      },
      "positions": {
        "params": {
          "key": "The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper"
        },
        "return": "_liquidity The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"
      },
      "protocolFees": {
        "details": "Protocol fees will never exceed uint128 max in either token"
      },
      "slot0": {
        "return": "sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy"
      },
      "tickSpacing": {
        "details": "Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.",
        "return": "The tick spacing"
      },
      "ticks": {
        "params": {
          "tick": "The tick to look up"
        },
        "return": "liquidityGross the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position."
      },
      "token0": {
        "return": "The token contract address"
      },
      "token1": {
        "return": "The token contract address"
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "Burn(address,int24,int24,uint128,uint256,uint256)": {
        "notice": "Emitted when a position's liquidity is removed"
      },
      "Collect(address,address,int24,int24,uint128,uint128)": {
        "notice": "Emitted when fees are collected by the owner of a position"
      },
      "CollectProtocol(address,address,uint128,uint128)": {
        "notice": "Emitted when the collected protocol fees are withdrawn by the factory owner"
      },
      "Flash(address,address,uint256,uint256,uint256,uint256)": {
        "notice": "Emitted by the pool for any flashes of token0/token1"
      },
      "IncreaseObservationCardinalityNext(uint16,uint16)": {
        "notice": "Emitted by the pool for increases to the number of observations that can be stored"
      },
      "Initialize(uint160,int24)": {
        "notice": "Emitted exactly once by a pool when #initialize is first called on the pool"
      },
      "Mint(address,address,int24,int24,uint128,uint256,uint256)": {
        "notice": "Emitted when liquidity is minted for a given position"
      },
      "SetFeeProtocol(uint8,uint8,uint8,uint8)": {
        "notice": "Emitted when the protocol fee is changed by the pool"
      },
      "Swap(address,address,int256,int256,uint160,uint128,int24)": {
        "notice": "Emitted by the pool for any swaps between token0 and token1"
      }
    },
    "kind": "user",
    "methods": {
      "burn(int24,int24,uint128)": {
        "notice": "Burn liquidity from the sender and account tokens owed for the liquidity to the position"
      },
      "collect(address,int24,int24,uint128,uint128)": {
        "notice": "Collects tokens owed to a position"
      },
      "collectProtocol(address,uint128,uint128)": {
        "notice": "Collect the protocol fee accrued to the pool"
      },
      "factory()": {
        "notice": "The contract that deployed the pool, which must adhere to the IMoonwalkerFactory interface"
      },
      "fee()": {
        "notice": "The pool's fee in hundredths of a bip, i.e. 1e-6"
      },
      "feeGrowthGlobal0X128()": {
        "notice": "The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool"
      },
      "feeGrowthGlobal1X128()": {
        "notice": "The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool"
      },
      "flash(address,uint256,uint256,bytes)": {
        "notice": "Receive token0 and/or token1 and pay it back, plus a fee, in the callback"
      },
      "increaseObservationCardinalityNext(uint16)": {
        "notice": "Increase the maximum number of price and liquidity observations that this pool will store"
      },
      "initialize(uint160)": {
        "notice": "Sets the initial price for the pool"
      },
      "liquidity()": {
        "notice": "The currently in range liquidity available to the pool"
      },
      "maxLiquidityPerTick()": {
        "notice": "The maximum amount of position liquidity that can use any tick in the range"
      },
      "mint(address,int24,int24,uint128,bytes)": {
        "notice": "Adds liquidity for the given recipient/tickLower/tickUpper position"
      },
      "observations(uint256)": {
        "notice": "Returns data about a specific observation index"
      },
      "observe(uint32[])": {
        "notice": "Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"
      },
      "positions(bytes32)": {
        "notice": "Returns the information about a position by the position's key"
      },
      "protocolFees()": {
        "notice": "The amounts of token0 and token1 that are owed to the protocol"
      },
      "setFeeProtocol(uint8,uint8)": {
        "notice": "Set the denominator of the protocol's % share of the fees"
      },
      "slot0()": {
        "notice": "The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally."
      },
      "snapshotCumulativesInside(int24,int24)": {
        "notice": "Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"
      },
      "swap(address,bool,int256,uint160,bytes)": {
        "notice": "Swap token0 for token1, or token1 for token0"
      },
      "tickBitmap(int16)": {
        "notice": "Returns 256 packed tick initialized boolean values. See TickBitmap for more information"
      },
      "tickSpacing()": {
        "notice": "The pool tick spacing"
      },
      "ticks(int24)": {
        "notice": "Look up information about a specific tick in the pool"
      },
      "token0()": {
        "notice": "The first of the two tokens of the pool, sorted by address"
      },
      "token1()": {
        "notice": "The second of the two tokens of the pool, sorted by address"
      }
    },
    "version": 1
  }
}