{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "COIN",
      "outputs": [
        {
          "internalType": "contract MockERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "USD",
      "outputs": [
        {
          "internalType": "contract MockERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "excludedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inverted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nfpm",
      "outputs": [
        {
          "internalType": "contract INonfungiblePositionManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pool",
      "outputs": [
        {
          "internalType": "contract IUniswapV3Pool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "int24",
          "name": "lower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "upper",
          "type": "int24"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "coinAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "usdAmount",
          "type": "uint256"
        },
        {
          "internalType": "int24",
          "name": "lower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "upper",
          "type": "int24"
        }
      ],
      "name": "stake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "int24",
          "name": "width",
          "type": "int24"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract MockERC20",
          "name": "inToken",
          "type": "address"
        },
        {
          "internalType": "contract MockERC20",
          "name": "outToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceLimitX96",
          "type": "uint160"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract MockERC20",
          "name": "inToken",
          "type": "address"
        },
        {
          "internalType": "contract MockERC20",
          "name": "outToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPriceLimitX96",
          "type": "uint160"
        }
      ],
      "name": "swapToPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "swapper",
      "outputs": [
        {
          "internalType": "contract ISwapRouter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifactSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedArtifactSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "targetedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "testExecuteLimitOrder",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "testExecuteOrderExactInput",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "testExecuteOrderExactOutput",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "testPlaceOrder",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": [],
      "name": "vault",
      "outputs": [
        {
          "internalType": "contract Vault",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "[encoded data, 28548 characters]$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$[encoded data, 64306 characters]",
    "sourceMap": "257:6879:66:-:0;;;612:87:63;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;-1:-1:-1;;;1572:26:0;;;3126:44:4;;;-1:-1:-1;;3126:44:4;;;;;;257:6879:66;;;;;;;;;;;;;;;;",
    "linkReferences": {
      "src/Util.sol": {
        "Util": [
          {
            "start": 14272,
            "length": 20
          },
          {
            "start": 14427,
            "length": 20
          }
        ]
      }
    }
  },
  "deployedBytecode": {
    "object": "[encoded data, 28274 characters]$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$[encoded data, 64306 characters]",
    "sourceMap": "257:6879:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;444:353;;;:::i;:::-;;877:21:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;2170:134:7;;;:::i;:::-;;;;;;;:::i;705:58:63:-;;;;;;;;;2939:133:7;;;:::i;2640:141::-;;;:::i;5079:824:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;2456:178:7:-;;;:::i;:::-;;;;;;;:::i;988:20:63:-;;;;;;;;;;;;;;;;;;;:::i;804:1973:66:-;;;:::i;5341:1792::-;;;:::i;612:87:63:-;;;;;;;;;2310:140:7;;;:::i;:::-;;;;;;;:::i;4062:1272:66:-;;;:::i;2787:146:7:-;;;:::i;2783:1272:66:-;;;:::i;5909:112:63:-;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;1875:141:7;;;:::i;1819:584:0:-;;;:::i;344:22:66:-;;;;;;;;;6027:683:63;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2022:142:7:-;;;:::i;2481:179:63:-;;;;;;:::i;:::-;;:::i;1572:26:0:-;;;;;;;;;;;;372:18:66;;;;;;;;;444:353;478:6;:4;:6::i;:::-;504:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;494:7:66;:23;;;;;;;;;;;;;;541:34;;;;;:19;;:34;;569:4;;541:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;527:5;:49;;;;;;;;;;;623:4;;:15;;;;;;;;-1:-1:-1;;623:4:66;;;;;:13;;:15;;;;;;;;;;;;;;;:4;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;617:21;;:2;:21;:::i;:::-;607:31;;:7;:31;:::i;:::-;648:4;;666:5;;648:37;;;;;586:52;;-1:-1:-1;648:4:66;;;;;:9;;:37;;666:5;;586:52;;648:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:17;731:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;725:20;;:2;:20;:::i;:::-;715:30;;:7;:30;:::i;:::-;755:3;;;772:5;;755:35;;;;;695:50;;-1:-1:-1;755:3:66;;;;;:8;;:35;;772:5;;;;695:50;;755:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;468:329;;444:353::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;5079:824:63:-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;;;5079:824;;;;;;;:::o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;2456:178:7:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;804:1973:66:-;884:25;;;907:1;884:25;;;;;;;;;847:34;;884:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;884:25:66;;;;;;;;;;;;-1:-1:-1;;963:28:66;;;989:1;963:28;;;;;;;;;847:62;;-1:-1:-1;919:41:66;;963:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;963:28:66;;;;;;;;;;;;;;-1:-1:-1;1019:319:66;;;;;;;;;919:72;;-1:-1:-1;1019:319:66;-1:-1:-1;1019:319:66;;;;1069:268;;;;;;;;;;;;;;;;;1019:319;;;1001:12;1014:1;1001:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1392:28;;;1418:1;1392:28;;;;;;;;;1348:41;;1392:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1392:28:66;;;;;;;;;;;;;;-1:-1:-1;1448:319:66;;;;;;;;;1348:72;;-1:-1:-1;1448:319:66;-1:-1:-1;1448:319:66;;;;1498:268;;;;;;;;;;;;;;;;;1448:319;;;1430:12;1443:1;1430:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1821:28;;;1847:1;1821:28;;;;;;;;;1777:41;;1821:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1821:28:66;;;;;;;;;;;;;;-1:-1:-1;1877:319:66;;;;;;;;;1777:72;;-1:-1:-1;1877:319:66;-1:-1:-1;1877:319:66;;;;1927:268;;;;;;;;;;;;;;;;;1877:319;;;1859:12;1872:1;1859:15;;;;;;;;:::i;:::-;;;;;;:337;;;;2220:36;;;;;;;;2237:5;2220:36;;;;;;2243:12;2220:36;;;2206:8;2215:1;2206:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2280:36;;;;;;;;2297:5;2280:36;;;;;;2303:12;2280:36;;;2266:8;2275:1;2266:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2340:36;;;;;;;;2357:5;2340:36;;;;;;2363:12;2340:36;;;2326:8;2335:1;2326:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2386:31;2421:270;;;;;;;;2453:42;2421:270;;;;;;2497:42;2421:270;;;;;;2553:48;;;;;;;;2568:27;2553:48;;;;;;;;:::i;:::-;;;2597:3;2553:48;;;;;2421:270;;;2603:21;2421:270;;;;2626:4;2421:270;;;;;;;;-1:-1:-1;2421:270:66;;;;2651:20;2421:270;;;;;;;;;;;2719:17;;2386:305;;-1:-1:-1;2701:36:66;;2719:17;;2386:305;;2719:17;;:::i;:::-;;;;;;;;;;;;;2701;:36::i;:::-;2747:5;;:23;;;;;:5;;;;;:16;;:23;;2764:5;;2747:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5341:1792;5481:25;;;5504:1;5481:25;;;;;;;;;5444:34;;5481:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5481:25:66;;;;;;;;;;;;-1:-1:-1;;5560:28:66;;;5586:1;5560:28;;;;;;;;;5444:62;;-1:-1:-1;5516:41:66;;5560:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5560:28:66;;;;;;;;;;;;;;;5516:72;;5598:13;5632:5;5614:7;:5;:7::i;:::-;:15;;5624:5;5614:15;:::i;:::-;:23;;;;:::i;:::-;5716:49;;;;;;;;5740:4;5716:49;;5678:23;5716:49;;;;;;;;;;;;;;;;;;;;;;;;;;5704:63;;5598:39;;-1:-1:-1;5678:23:66;5704:63;;;;:::i;:::-;;;;;;;;;;;5795:61;;;;;;5704:63;-1:-1:-1;5704:63:66;5815:28;5795:61;;;;5845:10;5795:61;;;5777:12;5790:1;5777:15;;;;;;;;:::i;:::-;;;;;;:79;;;;5880:47;;;;;;;;5897:16;5880:47;;;;;;5914:12;5880:47;;;5866:8;5875:1;5866:11;;;;;;;;:::i;:::-;;;;;;:61;;;;5937:15;5965:6;;;;;;;;;;;5937:35;;5982:14;6024:2;6005:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6001:20;;:2;:20;:::i;:::-;5999:22;;:1;:22;:::i;:::-;:27;;;;:::i;:::-;6077:5;;6058:34;;;;;5982:44;;-1:-1:-1;6058:10:66;;;;;;;:34;;6077:5;;5982:44;;6058:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6137:188:66;;;;;;;;6169:6;;;;;;6137:188;;6177:6;;;;6137:188;;;;;;;;6205:48;;;;;;;6169:6;6205:48;;;6249:3;;;;;;;6205:48;;;;6137:188;;;;;;;;;;;;;;;;;-1:-1:-1;6137:188:66;;;;;;350:16:54;6137:188:66;;;;;;;;;;6355:5;;:21;;;;;;;6137:188;;-1:-1:-1;;;;6355:5:66;;;;:19;;:21;;;;;6137:188;6355:21;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6386:5;;:23;;;;;6335:41;;-1:-1:-1;6386:5:66;;;:16;;:23;;6403:5;;6386:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;6457:30;6475:10;6470:16;;6457:12;:30::i;:::-;6514:10;;;;;;;;;;;;;;;;6498:27;;;;;:15;;;;:27;;6514:10;6498:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6535:5:66;;6564:22;;;;;;;;6535:5;6564:22;;;6535:52;;;;;:5;;;;;-1:-1:-1;6535:13:66;;-1:-1:-1;6535:52:66;;6549:10;;6535:5;6564:22;6535:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:64;;;;;;;;;;;;;;;;;;:12;:64::i;:::-;6703:18;6715:5;6703:11;:18::i;:::-;6782:10;;;;;;;;;;;;;;;;6766:27;;;;;:15;;;;:27;;6782:10;6766:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6881:5:66;;6910:22;;;;;;;;6881:5;6910:22;;;6881:52;;;;;:5;;;;;-1:-1:-1;6881:13:66;;-1:-1:-1;6881:52:66;;6895:10;;6881:5;6910:22;6881:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6993:30;7017:5;7005;7011;7005:11;;;;:::i;:::-;:17;;;;:::i;6993:30::-;7074:52;;;;;;;;;;;;;;;;;;:12;:52::i;:::-;5381:1752;;;;;;;;5341:1792::o;2310:140:7:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4062:1272:66;4154:25;;;4177:1;4154:25;;;;;;;;;4117:34;;4154:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4154:25:66;;;;;;;;;;;;-1:-1:-1;;4233:28:66;;;4259:1;4233:28;;;;;;;;;4117:62;;-1:-1:-1;4189:41:66;;4233:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4233:28:66;;;;;;;;;;;;;;-1:-1:-1;4289:319:66;;;;;;;;;4189:72;;-1:-1:-1;4289:319:66;-1:-1:-1;4289:319:66;;;;4339:268;;;;;;;;;;;;;;;;;4289:319;;;4271:12;4284:1;4271:15;;;;;;;;:::i;:::-;;;;;;:337;;;;4632:47;;;;;;;;4649:16;4632:47;;;;;;4666:12;4632:47;;;4618:8;4627:1;4618:11;;;;;;;;:::i;:::-;;;;;;:61;;;;4689:14;4730:2;4712:4;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4708:19;;:2;:19;:::i;:::-;4706:21;;:1;:21;:::i;:::-;:26;;;;:::i;:::-;4754:4;;4772:5;;4754:33;;;;;4689:43;;-1:-1:-1;4754:4:66;;;;;:9;;:33;;4772:5;;4689:43;;4754:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4855:214:66;;;;;;;;4895:4;;;;;;4855:214;;4910:3;;;;;4855:214;;;;;;;;4949:48;;;;;;;4895:4;4949:48;;;4993:3;;;;;;;4949:48;;;;4855:214;;;;;;;;;;;;;;;;;-1:-1:-1;4855:214:66;;;;;;350:16:54;4855:214:66;;;;;;;;;;5099:5;;:21;;;;;;;4855:214;;-1:-1:-1;;;;5099:5:66;;;;:19;;:21;;;;4855:214;5099:21;;;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5130:5;;:23;;;;;5079:41;;-1:-1:-1;5130:5:66;;;:16;;:23;;5147:5;;5130:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5163:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;5201:30;5219:10;5214:16;;5201:12;:30::i;:::-;5241:5;;5270:22;;;;;;;;5241:5;5270:22;;;5241:52;;;;;:5;;;;;:13;;:52;;5255:10;;5241:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:24;;;;;;;;;;;;;;;;;;:12;:24::i;:::-;4107:1227;;;;;4062:1272::o;2787:146:7:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:1272:66;2876:25;;;2899:1;2876:25;;;;;;;;;2839:34;;2876:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2876:25:66;;;;;;;;;;;;-1:-1:-1;;2955:28:66;;;2981:1;2955:28;;;;;;;;;2839:62;;-1:-1:-1;2911:41:66;;2955:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2955:28:66;;;;;;;;;;;;;;-1:-1:-1;3011:319:66;;;;;;;;;2911:72;;-1:-1:-1;3011:319:66;-1:-1:-1;3011:319:66;;;;3061:268;;;;;;;;;;;;;;;;;3011:319;;;2993:12;3006:1;2993:15;;;;;;;;:::i;:::-;;;;;;:337;;;;3354:47;;;;;;;;3371:16;3354:47;;;;;;3388:12;3354:47;;;3340:8;3349:1;3340:11;;;;;;;;:::i;:::-;;;;;;:61;;;;3411:14;3451:2;3434:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:18;;:2;:18;:::i;:::-;3428:20;;:1;:20;:::i;:::-;:25;;;;:::i;:::-;3474:4;;3492:5;;3474:33;;;;;3411:42;;-1:-1:-1;3474:4:66;;;;;:9;;:33;;3492:5;;3411:42;;3474:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3575:215:66;;;;;;;;3615:4;;;;;;3575:215;;3630:3;;;;;3575:215;;;;;;;;3669:48;;;;;;;3615:4;3669:48;;3713:3;3669:48;;;;3575:215;;;;;;;;;;-1:-1:-1;3575:215:66;;;;;;;;;;;;350:16:54;3575:215:66;;;;;;;;;;3820:5;;:21;;;;;;;3575:215;;-1:-1:-1;;;;3820:5:66;;;;:19;;:21;;;;3575:215;3820:21;;;;;;;:5;:21;;;;;;;;;;;;;;5909:112:63;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;6027:683:63:-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2412:55:63:-;1372:1102;1349:1125::o;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;2481:179:63:-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;2125:124:16:-;2184:58;2238:2;2200:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2184:15;:58::i;6598:121::-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;93:42;82:54;;682:49;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2343:164::-;2422:42;2460:3;2452:6;2422:42;:::i;:::-;-1:-1:-1;2496:4:69;2487:14;;2343:164::o;2605:506::-;2658:3;2690:37;2721:5;1957:12;;1884:87;2690:37;2074:19;;;2126:4;2117:14;;;;2211;;2882:1;2892:194;2906:6;2903:1;2900:13;2892:194;;;2962:48;3006:3;2997:6;2991:13;2962:48;:::i;:::-;2955:55;-1:-1:-1;2220:4:69;2211:14;;3023:53;-1:-1:-1;2928:1:69;2921:9;2892:194;;;-1:-1:-1;3102:3:69;;2605:506;-1:-1:-1;;;;2605:506:69:o;3116:261::-;3295:2;3284:9;3277:21;3258:4;3315:56;3367:2;3356:9;3352:18;3344:6;3315:56;:::i;4001:107::-;4047:7;4080:22;4096:5;4080:22;:::i;4113:144::-;4199:33;4226:5;4199:33;:::i;:::-;4192:5;4189:44;4179:72;;4247:1;4244;4237:12;4262:194;4352:20;;;4406:44;4352:20;4406:44;:::i;:::-;;4262:194;;;;:::o;4533:122::-;4624:5;4608:22;542:52;4660:172;4739:20;;;4793:33;4739:20;4793:33;:::i;4837:122::-;93:42;82:54;;4912:22;14:128;4964:172;5043:20;;;5097:33;5043:20;5097:33;:::i;5141:600::-;5265:6;5273;5281;5289;5342:3;5330:9;5321:7;5317:23;5313:33;5310:148;;;5369:79;257:6879:66;;;5369:79:69;5477:49;5518:7;5507:9;5477:49;:::i;:::-;5467:59;;5545:58;5595:7;5590:2;5579:9;5575:18;5545:58;:::i;:::-;5535:68;;5622:47;5661:7;5656:2;5645:9;5641:18;5622:47;:::i;:::-;5612:57;;5688:47;5727:7;5722:2;5711:9;5707:18;5688:47;:::i;:::-;5678:57;;5141:600;;;;;;;:::o;5746:106::-;5839:5;5823:22;542:52;5857:200;5991:2;5976:18;;6003:48;5980:9;6033:6;6003:48;:::i;6159:118::-;6232:20;6246:5;6139:1;6128:20;;6062:92;6282:168;6359:20;;;6413:31;6359:20;6413:31;:::i;6455:448::-;6528:6;6536;6544;6597:2;6585:9;6576:7;6572:23;6568:32;6565:147;;;6623:79;257:6879:66;;;6623:79:69;6731:38;6761:7;6750:9;6731:38;:::i;:::-;6721:48;;6788:45;6825:7;6820:2;6809:9;6805:18;6788:45;:::i;:::-;6778:55;;6852:45;6889:7;6884:2;6873:9;6869:18;6852:45;:::i;:::-;6842:55;;6455:448;;;;;:::o;7793:93::-;7715:66;7704:78;;7858:21;7637:151;7891;7969:30;7995:3;7987:6;7969:30;:::i;8139:500::-;8191:3;8223:36;8253:5;1957:12;;1884:87;8223:36;2074:19;;;2126:4;2117:14;;;;2211;;8412:1;8422:192;8436:6;8433:1;8430:13;8422:192;;;8492:47;8535:3;8526:6;8520:13;8492:47;:::i;:::-;8485:54;-1:-1:-1;2220:4:69;2211:14;;8552:52;-1:-1:-1;8458:1:69;8451:9;8422:192;;8644:289;8717:48;8761:3;8753:5;8747:12;8717:48;:::i;:::-;8699:3;8811:4;8804:5;8800:16;8794:23;8849:4;8842;8837:3;8833:14;8826:28;8870:57;8921:4;8916:3;8912:14;8898:12;8870:57;:::i;8938:154::-;9004:10;9043:43;9082:3;9074:6;9043:43;:::i;9202:731::-;9267:3;9299:49;9342:5;1957:12;;1884:87;9299:49;2074:19;;;2126:4;2117:14;;9457:5;9450:12;;9501:6;9498:1;9494:14;9487:5;9483:26;9532:51;9577:5;2220:4;2211:14;;2142:85;9532:51;9601:1;9611:296;9625:6;9622:1;9619:13;9611:296;;;9696:5;9690:4;9686:16;9681:3;9674:29;9724:61;9780:4;9771:6;9765:13;9724:61;:::i;:::-;9716:69;-1:-1:-1;2220:4:69;2211:14;;9892:4;9883:14;;;;;9798:65;-1:-1:-1;9647:1:69;9640:9;9611:296;;;-1:-1:-1;9923:4:69;;9202:731;-1:-1:-1;;;;;;9202:731:69:o;9938:333::-;10177:2;10166:9;10159:21;10140:4;10197:68;10261:2;10250:9;10246:18;10238:6;10197:68;:::i;10373:97::-;10348:13;;10341:21;10444:19;10276:92;10475:188;10603:2;10588:18;;10615:42;10592:9;10639:6;10615:42;:::i;11834:250::-;11919:1;11929:113;11943:6;11940:1;11937:13;11929:113;;;12019:11;;;12013:18;12000:11;;;11993:39;11965:2;11958:10;11929:113;;;-1:-1:-1;;12076:1:69;12058:16;;12051:27;11834:250::o;12256:317::-;12309:3;12341:26;12361:5;1957:12;;1884:87;12341:26;2074:19;;;2126:4;2117:14;;12446:67;12506:6;12499:5;12492:4;12485:5;12481:16;12446:67;:::i;:::-;12178:66;12173:2;12162:14;;12158:87;12529:38;;12256:317;-1:-1:-1;;;;12256:317:69:o;12578:139::-;12631:10;12670:41;12707:3;12699:6;12670:41;:::i;12814:653::-;12866:3;12898:36;12928:5;1957:12;;1884:87;12898:36;2074:19;;;2126:4;2117:14;;13030:5;13023:12;;13074:6;13071:1;13067:14;13060:5;13056:26;13105:38;13137:5;2220:4;2211:14;;2142:85;13105:38;13161:1;13171:270;13185:6;13182:1;13179:13;13171:270;;;13256:5;13250:4;13246:16;13241:3;13234:29;13284:48;13327:4;13318:6;13312:13;13284:48;:::i;:::-;13276:56;-1:-1:-1;2220:4:69;2211:14;;13426:4;13417:14;;;;;13345:52;-1:-1:-1;13207:1:69;13200:9;13171:270;;13472:280;13671:2;13660:9;13653:21;13634:4;13691:55;13742:2;13731:9;13727:18;13719:6;13691:55;:::i;13757:106::-;93:42;82:54;;13834:22;14:128;13868:200;14002:2;13987:18;;14014:48;13991:9;14044:6;14014:48;:::i;14558:290::-;14617:6;14670:2;14658:9;14649:7;14645:23;14641:32;14638:147;;;14696:79;257:6879:66;;;14696:79:69;14804:38;14834:7;14823:9;14804:38;:::i;14853:532::-;14935:6;14943;14951;14959;15012:3;15000:9;14991:7;14987:23;14983:33;14980:148;;;15039:79;257:6879:66;;;15039:79:69;15147:38;15177:7;15166:9;15147:38;:::i;:::-;15137:48;;15204:47;15243:7;15238:2;15227:9;15223:18;15204:47;:::i;:::-;15194:57;;15270:45;15307:7;15302:2;15291:9;15287:18;15270:45;:::i;:::-;15260:55;;15334:45;15371:7;15366:2;15355:9;15351:18;15334:45;:::i;15515:95::-;15469:34;15458:46;;15581:22;15390:120;15615:472;15833:3;15818:19;;15846:48;15822:9;15876:6;15846:48;:::i;:::-;15903:46;15945:2;15934:9;15930:18;15922:6;15903:46;:::i;:::-;15958:57;16011:2;16000:9;15996:18;15988:6;15958:57;:::i;:::-;16024;16077:2;16066:9;16062:18;16054:6;16024:57;:::i;:::-;15615:472;;;;;;;:::o;16190:93::-;16170:8;16159:20;;16255:21;16092:93;16288:186;16420:2;16405:18;;16432:36;16409:9;16450:6;16432:36;:::i;16479:516::-;16594:6;16602;16610;16663:2;16651:9;16642:7;16638:23;16634:32;16631:147;;;16689:79;257:6879:66;;;16689:79:69;16797:49;16838:7;16827:9;16797:49;:::i;:::-;16787:59;;16865:58;16915:7;16910:2;16899:9;16895:18;16865:58;:::i;:::-;16855:68;;16942:47;16981:7;16976:2;16965:9;16961:18;16942:47;:::i;17000:369::-;17066:6;17074;17127:2;17115:9;17106:7;17102:23;17098:32;17095:147;;;17153:79;257:6879:66;;;17153:79:69;17261:38;17291:7;17280:9;17261:38;:::i;:::-;17251:48;;17318:45;17355:7;17350:2;17339:9;17335:18;17318:45;:::i;:::-;17308:55;;17000:369;;;;;:::o;18125:138::-;18208:30;18232:5;18208:30;:::i;18268:192::-;18366:13;;;18413:41;18366:13;18413:41;:::i;18465:328::-;18543:6;18596:2;18584:9;18575:7;18571:23;18567:32;18564:147;;;18622:79;257:6879:66;;;18622:79:69;18730:57;18779:7;18768:9;18730:57;:::i;18879:118::-;18867:4;18856:16;;18952:20;18798:76;19002:172;19090:13;;;19137:31;19090:13;19137:31;:::i;19179:308::-;19247:6;19300:2;19288:9;19279:7;19275:23;19271:32;19268:147;;;19326:79;257:6879:66;;;19326:79:69;19434:47;19473:7;19462:9;19434:47;:::i;19492:184::-;19544:77;19541:1;19534:88;19641:4;19638:1;19631:15;19665:4;19662:1;19655:15;19768:402;19864:6;19887:5;19901:263;19922:1;19912:8;19909:15;19901:263;;;19972:4;19967:3;19963:14;19957:4;19954:24;19951:50;;;19981:18;;:::i;:::-;20031:1;20021:8;20017:16;20014:49;;;20045:16;;;;20014:49;20084:15;;20124:30;20145:8;19752:1;19748:13;;19681:82;20124:30;20112:42;;19901:263;;;19768:402;;;;;;;:::o;20175:996::-;20229:5;20259:8;20249:80;;-1:-1:-1;20300:1:69;20314:5;;20249:80;20348:4;20338:76;;-1:-1:-1;20385:1:69;20399:5;;20338:76;20430:4;20448:1;20443:59;;;;20516:1;20511:220;;;;20423:308;;20443:59;20473:1;20464:10;;20487:5;;;20511:220;20548:3;20538:8;20535:17;20532:43;;;20555:18;;:::i;:::-;20617:1;20607:8;20603:16;20641:7;20632:16;;20676:3;20667:7;20664:16;20661:42;;;20683:18;;:::i;:::-;20661:42;20716:5;;;20423:308;;20815:2;20805:8;20802:16;20796:3;20790:4;20787:13;20783:36;20777:2;20767:8;20764:16;20759:2;20753:4;20750:12;20746:35;20743:77;20740:249;;;-1:-1:-1;20858:19:69;;;;20922:16;;;20919:42;;;20941:18;;:::i;:::-;20919:42;20974:5;;20740:249;21021:42;21059:3;21049:8;21043:4;21040:1;21021:42;:::i;:::-;21096:6;21091:3;21087:16;21078:7;21075:29;21072:55;;;21107:18;;:::i;:::-;21145:20;;20175:996;-1:-1:-1;;;;20175:996:69:o;21176:258::-;21234:5;21284:4;21307:121;21361:66;18867:4;18856:16;;21328:6;21307:121;:::i;21439:308::-;21479:7;21528:1;21566;21610:13;;;21594:30;21644:9;21633:20;;21711:3;21700:9;21696:19;21691:3;21688:28;21682:3;21675:11;21672:45;21662:79;;21721:18;;:::i;:::-;21662:79;;;21439:308;;;;:::o;21752:283::-;21914:2;21899:18;;21926:37;21903:9;21945:6;21926:37;:::i;:::-;21972:57;22025:2;22014:9;22010:18;22002:6;21972:57;:::i;22040:116::-;10348:13;;10341:21;22112:19;10276:92;22161:170;22248:13;;;22295:30;22248:13;22295:30;:::i;22336:306::-;22403:6;22456:2;22444:9;22435:7;22431:23;22427:32;22424:147;;;22482:79;257:6879:66;;;22482:79:69;22590:46;22628:7;22617:9;22590:46;:::i;22955:948::-;23031:48;23075:3;23067:5;23061:12;23031:48;:::i;:::-;23125:4;23118:5;23114:16;23108:23;23140:59;23193:4;23188:3;23184:14;23170:12;23140:59;:::i;:::-;;23247:4;23240:5;23236:16;23230:23;23262:59;23315:4;23310:3;23306:14;23290;23262:59;:::i;:::-;;23369:4;23362:5;23358:16;23352:23;23384:61;23439:4;23434:3;23430:14;23414;23384:61;:::i;:::-;;23493:4;23486:5;23482:16;23476:23;23508:50;23552:4;23547:3;23543:14;23527;23508:50;:::i;:::-;;23606:4;23599:5;23595:16;23589:23;23621:50;23665:4;23660:3;23656:14;23640;23621:50;:::i;:::-;;23719:4;23712:5;23708:16;23702:23;23734:50;23778:4;23773:3;23769:14;23753;23734:50;:::i;:::-;;23832:4;23825:5;23821:16;23815:23;23847:50;23891:4;23886:3;23882:14;23866;23847:50;:::i;23908:294::-;24124:3;24109:19;;24137:59;24113:9;24178:6;24137:59;:::i;24207:176::-;24297:13;;;24344:33;24297:13;24344:33;:::i;24388:312::-;24458:6;24511:2;24499:9;24490:7;24486:23;24482:32;24479:147;;;24537:79;257:6879:66;;;24537:79:69;24645:49;24686:7;24675:9;24645:49;:::i;24705:184::-;24757:77;24754:1;24747:88;24854:4;24851:1;24844:15;24878:4;24875:1;24868:15;24894:202;24934:1;24977;25015;24999:18;25036:3;25026:37;;25043:18;;:::i;:::-;25077:13;;;24894:202;-1:-1:-1;;;24894:202:69:o;25290:184::-;25342:77;25339:1;25332:88;25439:4;25436:1;25429:15;25463:4;25460:1;25453:15;25479:184;25531:77;25528:1;25521:88;25628:4;25625:1;25618:15;25652:4;25649:1;25642:15;25668:113;25749:1;25742:5;25739:12;25729:46;;25755:18;;:::i;25786:131::-;25860:5;25874:37;25860:5;25874:37;:::i;25922:121::-;25972:9;26009:28;26031:5;26009:28;:::i;26048:116::-;26120:37;26151:5;26120:37;:::i;26169:226::-;26228:43;26267:3;26259:5;26253:12;26228:43;:::i;:::-;26317:4;26310:5;26306:16;26300:23;26332:57;26383:4;26378:3;26374:14;26360:12;26332:57;:::i;26602:93::-;26572:18;26561:30;;26667:21;26494:103;27153:93;27139:6;27128:18;;27218:21;27069:79;27629:119;27716:1;27709:5;27706:12;27696:46;;27722:18;;:::i;27753:143::-;27833:5;27847:43;27833:5;27847:43;:::i;27901:133::-;27957:9;27994:34;28022:5;27994:34;:::i;28039:128::-;28117:43;28154:5;28117:43;:::i;28745:286::-;28816:49;28861:3;28853:5;28847:12;28816:49;:::i;:::-;28798:3;28911:4;28904:5;28900:16;28894:23;28949:4;28942;28937:3;28933:14;28926:28;28970:55;29019:4;29014:3;29010:14;28996:12;28970:55;:::i;29036:150::-;29100:10;29139:41;29176:3;29168:6;29139:41;:::i;29294:719::-;29357:3;29389:47;29430:5;1957:12;;1884:87;29389:47;2074:19;;;2126:4;2117:14;;29543:5;29536:12;;29587:6;29584:1;29580:14;29573:5;29569:26;29618:49;29661:5;2220:4;2211:14;;2142:85;29618:49;29685:1;29695:292;29709:6;29706:1;29703:13;29695:292;;;29780:5;29774:4;29770:16;29765:3;29758:29;29808:59;29862:4;29853:6;29847:13;29808:59;:::i;:::-;29800:67;-1:-1:-1;2220:4:69;2211:14;;29972:4;29963:14;;;;;29880:63;-1:-1:-1;29731:1:69;29724:9;29695:292;;30018:283;30086:36;30118:3;30110:5;30104:12;30086:36;:::i;:::-;30068:3;30168:4;30161:5;30157:16;30151:23;30206:4;30199;30194:3;30190:14;30183:28;30227:68;30289:4;30284:3;30280:14;30266:12;30227:68;:::i;30306:144::-;30367:10;30406:38;30440:3;30432:6;30406:38;:::i;30555:701::-;30615:3;30647:44;30685:5;1957:12;;1884:87;30647:44;2074:19;;;2126:4;2117:14;;30795:5;30788:12;;30839:6;30836:1;30832:14;30825:5;30821:26;30870:46;30910:5;2220:4;2211:14;;2142:85;30870:46;30934:1;30944:286;30958:6;30955:1;30952:13;30944:286;;;31029:5;31023:4;31019:16;31014:3;31007:29;31057:56;31108:4;31099:6;31093:13;31057:56;:::i;:::-;31049:64;-1:-1:-1;2220:4:69;2211:14;;31215:4;31206:14;;;;;31126:60;-1:-1:-1;30980:1:69;30973:9;30944:286;;31261:987;31331:48;31375:3;31367:5;31361:12;31331:48;:::i;:::-;31313:3;31425:4;31418:5;31414:16;31408:23;31440:59;31493:4;31488:3;31484:14;31470:12;31440:59;:::i;:::-;;31547:4;31540:5;31536:16;31530:23;31562:55;31611:4;31606:3;31602:14;31586;31562:55;:::i;:::-;;31665:4;31658:5;31654:16;31648:23;31680:50;31724:4;31719:3;31715:14;31699;31680:50;:::i;:::-;;31778:4;31771:5;31767:16;31761:23;31793:47;31834:4;31829:3;31825:14;31809;31793:47;:::i;:::-;;31888:4;31881:5;31877:16;31871:23;31903:47;31944:4;31939:3;31935:14;31919;31903:47;:::i;:::-;;31998:4;31991:5;31987:16;31981:23;32013:49;32056:4;32051:3;32047:14;32031;32013:49;:::i;:::-;;32110:4;32103:5;32099:16;32093:23;32150:6;32141;32136:3;32132:16;32125:32;32173:69;32234:6;32229:3;32225:16;32209:14;32173:69;:::i;32253:266::-;32438:2;32427:9;32420:21;32401:4;32458:55;32509:2;32498:9;32494:18;32486:6;32458:55;:::i;32524:308::-;32564:7;93:42;82:54;;93:42;82:54;;93:42;32695:13;;;82:54;32679:30;14:128;32837:202;32877:1;93:42;82:54;;93:42;82:54;;32942:18;14:128;33144:93;33122:10;33111:22;;33209:21;33044:95;33341:93;33406:21;33421:5;33320:2;33309:21;;33242:94;33439:551;33507:34;33537:3;33529:5;33523:12;33507:34;:::i;:::-;33587:4;33580:5;33576:16;33570:23;33602:45;33641:4;33636:3;33632:14;33618:12;33602:45;:::i;:::-;;33695:4;33688:5;33684:16;33678:23;33710:49;33753:4;33748:3;33744:14;33728;33710:49;:::i;:::-;;33807:4;33800:5;33796:16;33790:23;33822:50;33866:4;33861:3;33857:14;33841;33822:50;:::i;:::-;;33920:4;33913:5;33909:16;33903:23;33935:49;33978:4;33973:3;33969:14;33953;33935:49;:::i;33995:270::-;34195:3;34180:19;;34208:51;34184:9;34241:6;34208:51;:::i;34270:120::-;26572:18;26561:30;;34344:21;26494:103;34395:174;34484:13;;;34531:32;34484:13;34531:32;:::i;34574:310::-;34643:6;34696:2;34684:9;34675:7;34671:23;34667:32;34664:147;;;34722:79;257:6879:66;;;34722:79:69;34830:48;34870:7;34859:9;34830:48;:::i;35362:228::-;35509:2;35498:9;35491:21;35472:4;35529:55;35580:2;35569:9;35565:18;35557:6;35529:55;:::i;35781:148::-;35833:9;18867:4;18856:16;;35870:53;18798:76;35934:116;36004:39;36037:5;36004:39;:::i;36055:107::-;36119:37;36152:3;36144:5;36138:12;36119:37;:::i;:::-;;;36055:107::o;36167:440::-;36419:2;36404:18;;36431:46;36408:9;36459:6;36431:46;:::i;:::-;36486:50;36532:2;36521:9;36517:18;36509:6;36486:50;:::i;:::-;36545:56;36597:2;36586:9;36582:18;36574:6;36545:56;:::i;36612:184::-;36664:77;36661:1;36654:88;36761:4;36758:1;36751:15;36785:4;36782:1;36775:15;36801:318;36886:1;36882:12;;;;;;36956;;;36977:63;;37033:4;37023:8;37019:19;37009:29;;36977:63;37086:2;37078:6;37075:14;37055:18;37052:38;37049:64;;37093:18;;:::i;:::-;37049:64;;36801:318;;;:::o;37124:176::-;37214:13;;;37261:33;37214:13;37261:33;:::i;37305:172::-;37393:13;;;37440:31;37393:13;37440:31;:::i;37482:120::-;27139:6;27128:18;;37556:21;27069:79;37607:174;37696:13;;;37743:32;37696:13;37743:32;:::i;37786:860::-;37900:6;37908;37916;37924;37932;37940;37948;38001:3;37989:9;37980:7;37976:23;37972:33;37969:148;;;38028:79;257:6879:66;;;38028:79:69;38136:49;38177:7;38166:9;38136:49;:::i;:::-;38126:59;;38204:56;38252:7;38247:2;38236:9;38232:18;38204:56;:::i;:::-;38194:66;;38279:57;38328:7;38323:2;38312:9;38308:18;38279:57;:::i;:::-;38269:67;;38355:57;38404:7;38399:2;38388:9;38384:18;38355:57;:::i;:::-;38345:67;;38431:58;38481:7;38475:3;38464:9;38460:19;38431:58;:::i;:::-;38421:68;;38508:57;38557:7;38551:3;38540:9;38536:19;38508:57;:::i;:::-;38498:67;;38584:56;38632:7;38626:3;38615:9;38611:19;38584:56;:::i;:::-;38574:66;;37786:860;;;;;;;;;;:::o;39438:301::-;39479:3;39511:25;39530:5;1957:12;;1884:87;39511:25;39611:3;39632:67;39692:6;39685:5;39678:4;39671:5;39667:16;39632:67;:::i;:::-;39715:18;;39438:301;-1:-1:-1;;;39438:301:69:o;39744:290::-;39917:58;39971:3;39963:6;39917:58;:::i;:::-;39899:3;39991:37;40025:1;40020:3;40016:11;40008:6;39991:37;:::i;40039:189::-;40168:3;40193:29;40218:3;40210:6;40193:29;:::i;40858:257::-;93:42;82:54;;;;;;40969:28;;;;41032:54;;41029:80;;;41089:18;;:::i;41120:252::-;93:42;82:54;;;;;;41229:28;;;;41290:53;;41287:79;;;41346:18;;:::i;41713:272::-;41842:2;2074:19;;41760:3;2126:4;2117:14;;41677:24;41662:40;;41854:95;41976:2;41965:14;;41713:272;-1:-1:-1;;41713:272:69:o;42130:271::-;42259:1;2074:19;;42177:3;2126:4;2117:14;;42117:5;42102:21;;42270:95;41990:135;42773:610;43111:2;43100:9;43093:21;43074:4;43137:49;43182:2;43171:9;43167:18;43137:49;:::i;:::-;43234:9;43226:6;43222:22;43217:2;43206:9;43202:18;43195:50;43262:37;43292:6;43262:37;:::i;:::-;43254:45;;;43308:69;43373:2;43362:9;43358:18;43350:6;43308:69;:::i;43553:272::-;43682:2;2074:19;;43600:3;2126:4;2117:14;;43523:18;43508:34;;43694:95;43388:160;43971:271;44100:1;2074:19;;44018:3;2126:4;2117:14;;43957:6;43942:22;;44111:95;43830:136;44600:599;44937:2;44926:9;44919:21;44900:4;44963:49;45008:2;44997:9;44993:18;44963:49;:::i;:::-;45060:9;45052:6;45048:22;45043:2;45032:9;45028:18;45021:50;45088:37;45118:6;45088:37;:::i;45204:447::-;45420:3;45405:19;;45433:37;45409:9;45452:6;45433:37;:::i;:::-;45479:46;45521:2;45510:9;45506:18;45498:6;45479:46;:::i;:::-;45534:45;45575:2;45564:9;45560:18;45552:6;45534:45;:::i;:::-;45588:57;45641:2;45630:9;45626:18;45618:6;45588:57;:::i;45656:238::-;45690:3;45723:20;45737:5;6139:1;6128:20;;6062:92;45723:20;45767:66;45758:7;45755:79;45752:105;;45837:18;;:::i;:::-;45877:1;45873:15;;45656:238;-1:-1:-1;;45656:238:69:o;45899:303::-;45937:4;45967:16;45981:1;6139;6128:20;;6062:92;45967:16;46015;46029:1;6139;6128:20;;6062:92;46015:16;46006:26;;;-1:-1:-1;46006:26:69;46082:66;46070:79;;46163:8;46151:21;;46067:106;46064:132;;;46176:18;;:::i;46207:297::-;46245:3;46274:16;46288:1;6139;6128:20;;6062:92;46274:16;46321;46335:1;6139;6128:20;;6062:92;46321:16;46312:26;;-1:-1:-1;46312:26:69;46385:8;46374:20;;46407:66;46396:78;;46371:104;46368:130;;;46478:18;;:::i;47055:308::-;47123:6;47176:2;47164:9;47155:7;47151:23;47147:32;47144:147;;;47202:79;257:6879:66;;;47202:79:69;47310:47;47349:7;47338:9;47310:47;:::i;47368:91::-;47432:20;47446:5;6139:1;6128:20;;6062:92;47464:268;47626:2;47611:18;;47638:35;47615:9;47655:6;47638:35;:::i;:::-;47682:44;47722:2;47711:9;47707:18;47699:6;47682:44;:::i;47842:1301::-;47906:48;47950:3;47942:5;47936:12;47906:48;:::i;:::-;48000:4;47993:5;47989:16;47983:23;48015:59;48068:4;48063:3;48059:14;48045:12;48015:59;:::i;:::-;;48122:4;48115:5;48111:16;48105:23;48137:59;48190:4;48185:3;48181:14;48165;48137:59;:::i;:::-;;48244:4;48237:5;48233:16;48227:23;48259:57;48310:4;48305:3;48301:14;48285;48259:57;:::i;:::-;;48364:4;48357:5;48353:16;48347:23;48379:57;48430:4;48425:3;48421:14;48405;48379:57;:::i;:::-;;48484:4;48477:5;48473:16;48467:23;48499:50;48543:4;48538:3;48534:14;48518;48499:50;:::i;:::-;;48597:4;48590:5;48586:16;48580:23;48612:50;48656:4;48651:3;48647:14;48631;48612:50;:::i;:::-;;48710:4;48703:5;48699:16;48693:23;48725:50;48769:4;48764:3;48760:14;48744;48725:50;:::i;:::-;;48823:6;48816:5;48812:18;48806:25;48840:52;48884:6;48879:3;48875:16;48859:14;48840:52;:::i;:::-;;48940:6;48933:5;48929:18;48923:25;48957:63;49012:6;49007:3;49003:16;48987:14;48957:63;:::i;:::-;;49068:6;49061:5;49057:18;49051:25;49085:52;49129:6;49124:3;49120:16;49104:14;49085:52;:::i;49148:258::-;49340:3;49325:19;;49353:47;49329:9;49382:6;49353:47;:::i;49411:122::-;15469:34;15458:46;;49486:22;15390:120;49538:176;49628:13;;;49675:33;49628:13;49675:33;:::i;49719:595::-;49816:6;49824;49832;49840;49893:3;49881:9;49872:7;49868:23;49864:33;49861:148;;;49920:79;257:6879:66;;;49920:79:69;50028:49;50069:7;50058:9;50028:49;:::i;:::-;50018:59;;50096:58;50146:7;50141:2;50130:9;50126:18;50096:58;:::i;:::-;50086:68;;50173:58;50223:7;50218:2;50207:9;50203:18;50173:58;:::i;:::-;50163:68;;50250:58;50300:7;50295:2;50284:9;50280:18;50250:58;:::i",
    "linkReferences": {
      "src/Util.sol": {
        "Util": [
          {
            "start": 14135,
            "length": 20
          },
          {
            "start": 14290,
            "length": 20
          }
        ]
      }
    }
  },
  "methodIdentifiers": {
    "COIN()": "a54a72b7",
    "IS_TEST()": "fa7626d4",
    "USD()": "1bf6c21b",
    "excludeArtifacts()": "b5508aa9",
    "excludeContracts()": "e20c9f71",
    "excludeSenders()": "1ed7831c",
    "factory()": "c45a0155",
    "failed()": "ba414fa6",
    "fee()": "ddca3f43",
    "init()": "e1c7392a",
    "inverted()": "67e368fc",
    "nfpm()": "7303e913",
    "pool()": "16f0115b",
    "price()": "a035b1fe",
    "setUp()": "0a9254e4",
    "stake(uint256,int24)": "e3baf41a",
    "stake(uint256,int24,int24)": "53486e2f",
    "stake(uint256,uint256,int24,int24)": "d6f13002",
    "swap(address,address,uint256)": "df791e50",
    "swap(address,address,uint256,uint160)": "4a09d3dd",
    "swapToPrice(uint160)": "c578d91d",
    "swapper()": "2b3297f9",
    "targetArtifactSelectors()": "66d9a9a0",
    "targetArtifacts()": "85226c81",
    "targetContracts()": "3f7286f4",
    "targetSelectors()": "916a17c6",
    "targetSenders()": "3e5e3c23",
    "testExecuteLimitOrder()": "7083accc",
    "testExecuteOrderExactInput()": "8e3b558a",
    "testExecuteOrderExactOutput()": "9febdbf7",
    "testPlaceOrder()": "6fe2ae0e",
    "token0()": "0dfe1681",
    "token1()": "d21220a7",
    "vault()": "fbfa77cf"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactInput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPlaceOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestOrder.sol\":\"TestOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestOrder.sol\":{\"keccak256\":\"0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb\",\"dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_address",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "val",
              "type": "uint256[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "int256[]",
              "name": "val",
              "type": "int256[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "val",
              "type": "address[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_bytes",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_bytes32",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "int256",
              "name": "",
              "type": "int256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_int",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "val",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_address",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "uint256[]",
              "name": "val",
              "type": "uint256[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "int256[]",
              "name": "val",
              "type": "int256[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "address[]",
              "name": "val",
              "type": "address[]",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_array",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "bytes",
              "name": "val",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_bytes",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "val",
              "type": "bytes32",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_bytes32",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "int256",
              "name": "val",
              "type": "int256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_decimal_int",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "val",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_decimal_uint",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "int256",
              "name": "val",
              "type": "int256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_int",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "string",
              "name": "val",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_string",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "key",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "val",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_named_uint",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_string",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "log_uint",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "logs",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "COIN",
          "outputs": [
            {
              "internalType": "contract MockERC20",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "IS_TEST",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "USD",
          "outputs": [
            {
              "internalType": "contract MockERC20",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "excludeArtifacts",
          "outputs": [
            {
              "internalType": "string[]",
              "name": "excludedArtifacts_",
              "type": "string[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "excludeContracts",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "excludedContracts_",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "excludeSenders",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "excludedSenders_",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "factory",
          "outputs": [
            {
              "internalType": "contract Factory",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "failed",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "init"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "inverted",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "nfpm",
          "outputs": [
            {
              "internalType": "contract INonfungiblePositionManager",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "pool",
          "outputs": [
            {
              "internalType": "contract IUniswapV3Pool",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "price",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setUp"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "int24",
              "name": "lower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "upper",
              "type": "int24"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stake"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "coinAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "usdAmount",
              "type": "uint256"
            },
            {
              "internalType": "int24",
              "name": "lower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "upper",
              "type": "int24"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stake",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "int24",
              "name": "width",
              "type": "int24"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stake"
        },
        {
          "inputs": [
            {
              "internalType": "contract MockERC20",
              "name": "inToken",
              "type": "address"
            },
            {
              "internalType": "contract MockERC20",
              "name": "outToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "swap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "contract MockERC20",
              "name": "inToken",
              "type": "address"
            },
            {
              "internalType": "contract MockERC20",
              "name": "outToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "swap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "swapToPrice"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "swapper",
          "outputs": [
            {
              "internalType": "contract ISwapRouter",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "targetArtifactSelectors",
          "outputs": [
            {
              "internalType": "struct StdInvariant.FuzzSelector[]",
              "name": "targetedArtifactSelectors_",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "bytes4[]",
                  "name": "selectors",
                  "type": "bytes4[]"
                }
              ]
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "targetArtifacts",
          "outputs": [
            {
              "internalType": "string[]",
              "name": "targetedArtifacts_",
              "type": "string[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "targetContracts",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "targetedContracts_",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "targetSelectors",
          "outputs": [
            {
              "internalType": "struct StdInvariant.FuzzSelector[]",
              "name": "targetedSelectors_",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "bytes4[]",
                  "name": "selectors",
                  "type": "bytes4[]"
                }
              ]
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "targetSenders",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "targetedSenders_",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "testExecuteLimitOrder"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "testExecuteOrderExactInput"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "testExecuteOrderExactOutput"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "testPlaceOrder"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "vault",
          "outputs": [
            {
              "internalType": "contract Vault",
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "test/TestOrder.sol": "TestOrder"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/lib/ds-test/src/test.sol": {
        "keccak256": "0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b",
        "urls": [
          "bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240",
          "dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"
        ],
        "license": "GPL-3.0-or-later"
      },
      "lib/forge-std/src/Base.sol": {
        "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c",
        "urls": [
          "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224",
          "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdAssertions.sol": {
        "keccak256": "0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60",
        "urls": [
          "bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b",
          "dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdChains.sol": {
        "keccak256": "0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6",
        "urls": [
          "bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d",
          "dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdCheats.sol": {
        "keccak256": "0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5",
        "urls": [
          "bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a",
          "dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdError.sol": {
        "keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77",
        "urls": [
          "bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6",
          "dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdInvariant.sol": {
        "keccak256": "0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1",
        "urls": [
          "bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c",
          "dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdJson.sol": {
        "keccak256": "0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b",
        "urls": [
          "bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c",
          "dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdMath.sol": {
        "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2",
        "urls": [
          "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92",
          "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdStorage.sol": {
        "keccak256": "0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d",
        "urls": [
          "bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26",
          "dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdStyle.sol": {
        "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d",
        "urls": [
          "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8",
          "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdUtils.sol": {
        "keccak256": "0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1",
        "urls": [
          "bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140",
          "dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Test.sol": {
        "keccak256": "0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24",
        "urls": [
          "bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb",
          "dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5",
        "urls": [
          "bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c",
          "dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/console.sol": {
        "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba",
        "urls": [
          "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70",
          "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/console2.sol": {
        "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea",
        "urls": [
          "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973",
          "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/interfaces/IMulticall3.sol": {
        "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a",
        "urls": [
          "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0",
          "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/safeconsole.sol": {
        "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381",
        "urls": [
          "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae",
          "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": {
        "keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d",
        "urls": [
          "bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d",
          "dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
        "urls": [
          "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
          "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca",
        "urls": [
          "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd",
          "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {
        "keccak256": "0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68",
        "urls": [
          "bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56",
          "dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol": {
        "keccak256": "0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf",
        "urls": [
          "bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34",
          "dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
        "urls": [
          "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
          "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
        "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
        "urls": [
          "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
          "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
        "urls": [
          "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
          "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
        ],
        "license": "MIT"
      },
      "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": {
        "keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489",
        "urls": [
          "bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2",
          "dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": {
        "keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1",
        "urls": [
          "bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5",
          "dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
        "keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69",
        "urls": [
          "bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652",
          "dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": {
        "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634",
        "urls": [
          "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5",
          "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": {
        "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5",
        "urls": [
          "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7",
          "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": {
        "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd",
        "urls": [
          "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03",
          "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": {
        "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7",
        "urls": [
          "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047",
          "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": {
        "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235",
        "urls": [
          "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735",
          "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": {
        "keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f",
        "urls": [
          "bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f",
          "dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol": {
        "keccak256": "0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032",
        "urls": [
          "bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d",
          "dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/libraries/FullMath.sol": {
        "keccak256": "0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be",
        "urls": [
          "bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d",
          "dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2"
        ],
        "license": "MIT"
      },
      "lib_uniswap/v3-core/contracts/libraries/TickMath.sol": {
        "keccak256": "0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d",
        "urls": [
          "bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3",
          "dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol": {
        "keccak256": "0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4",
        "urls": [
          "bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471",
          "dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol": {
        "keccak256": "0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984",
        "urls": [
          "bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56",
          "dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol": {
        "keccak256": "0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d",
        "urls": [
          "bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f",
          "dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol": {
        "keccak256": "0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274",
        "urls": [
          "bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407",
          "dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol": {
        "keccak256": "0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862",
        "urls": [
          "bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f",
          "dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": {
        "keccak256": "0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975",
        "urls": [
          "bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53",
          "dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol": {
        "keccak256": "0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24",
        "urls": [
          "bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844",
          "dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol": {
        "keccak256": "0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4",
        "urls": [
          "bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48",
          "dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol": {
        "keccak256": "0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd",
        "urls": [
          "bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2",
          "dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v"
        ],
        "license": "GPL-2.0-or-later"
      },
      "src/Constants.sol": {
        "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f",
        "urls": [
          "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418",
          "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds"
        ],
        "license": "UNLICENSED"
      },
      "src/Factory.sol": {
        "keccak256": "0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15",
        "urls": [
          "bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05",
          "dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG"
        ],
        "license": "UNLICENSED"
      },
      "src/MockERC20.sol": {
        "keccak256": "0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089",
        "urls": [
          "bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4",
          "dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK"
        ],
        "license": null
      },
      "src/OrderLib.sol": {
        "keccak256": "0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89",
        "urls": [
          "bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424",
          "dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5"
        ],
        "license": "UNLICENSED"
      },
      "src/UniswapSwapper.sol": {
        "keccak256": "0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825",
        "urls": [
          "bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781",
          "dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx"
        ],
        "license": "UNLICENSED"
      },
      "src/Util.sol": {
        "keccak256": "0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad",
        "urls": [
          "bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80",
          "dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr"
        ],
        "license": "UNLICENSED"
      },
      "src/Vault.sol": {
        "keccak256": "0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935",
        "urls": [
          "bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045",
          "dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8"
        ],
        "license": "UNLICENSED"
      },
      "src/VaultDeployer.sol": {
        "keccak256": "0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10",
        "urls": [
          "bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3",
          "dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu"
        ],
        "license": "UNLICENSED"
      },
      "src/interface/IVaultDeployer.sol": {
        "keccak256": "0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886",
        "urls": [
          "bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a",
          "dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7"
        ],
        "license": "UNLICENSED"
      },
      "test/MockEnv.sol": {
        "keccak256": "0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b",
        "urls": [
          "bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368",
          "dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V"
        ],
        "license": "UNLICENSED"
      },
      "test/TestOrder.sol": {
        "keccak256": "0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa",
        "urls": [
          "bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb",
          "dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB"
        ],
        "license": "UNLICENSED"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "test/TestOrder.sol",
    "id": 51615,
    "exportedSymbols": {
      "Constants": [
        46264
      ],
      "Context": [
        43777
      ],
      "DSTest": [
        2291
      ],
      "ERC20": [
        43478
      ],
      "Factory": [
        46430
      ],
      "FixedPoint96": [
        44338
      ],
      "FullMath": [
        44519
      ],
      "IERC165": [
        43789
      ],
      "IERC20": [
        43556
      ],
      "IERC20Metadata": [
        43581
      ],
      "IERC721": [
        43697
      ],
      "IERC721Enumerable": [
        43728
      ],
      "IERC721Metadata": [
        43755
      ],
      "IERC721Permit": [
        45094
      ],
      "INonfungiblePositionManager": [
        45293
      ],
      "IPeripheryImmutableState": [
        45309
      ],
      "IPeripheryPayments": [
        45335
      ],
      "IPoolInitializer": [
        45354
      ],
      "ISwapRouter": [
        45454
      ],
      "IUniswapV3Factory": [
        43872
      ],
      "IUniswapV3Pool": [
        43894
      ],
      "IUniswapV3PoolActions": [
        44004
      ],
      "IUniswapV3PoolDerivedState": [
        44035
      ],
      "IUniswapV3PoolEvents": [
        44154
      ],
      "IUniswapV3PoolImmutables": [
        44194
      ],
      "IUniswapV3PoolOwnerActions": [
        44220
      ],
      "IUniswapV3PoolState": [
        44328
      ],
      "IUniswapV3SwapCallback": [
        43908
      ],
      "IVaultDeployer": [
        49445
      ],
      "LiquidityAmounts": [
        45794
      ],
      "MockERC20": [
        46478
      ],
      "MockEnv": [
        50069
      ],
      "OrderLib": [
        47922
      ],
      "PoolAddress": [
        45892
      ],
      "StdAssertions": [
        3823
      ],
      "StdChains": [
        4516
      ],
      "StdCheats": [
        7334
      ],
      "StdInvariant": [
        7624
      ],
      "StdStorage": [
        8374
      ],
      "StdStyle": [
        11038
      ],
      "StdUtils": [
        11886
      ],
      "Test": [
        11937
      ],
      "TestBase": [
        2357
      ],
      "TestOrder": [
        51614
      ],
      "TickMath": [
        45059
      ],
      "TransferHelper": [
        46063
      ],
      "UniswapSwapper": [
        48847
      ],
      "Util": [
        48904
      ],
      "Vault": [
        49181
      ],
      "VaultDeployer": [
        49436
      ],
      "Vm": [
        13464
      ],
      "console": [
        21528
      ],
      "console2": [
        29653
      ],
      "safeconsole": [
        42891
      ],
      "stdError": [
        7400
      ],
      "stdJson": [
        8200
      ],
      "stdMath": [
        8342
      ],
      "stdStorage": [
        9827
      ]
    },
    "nodeType": "SourceUnit",
    "src": "65:7072:66",
    "nodes": [
      {
        "id": 50825,
        "nodeType": "PragmaDirective",
        "src": "65:24:66",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0"
        ]
      },
      {
        "id": 50826,
        "nodeType": "PragmaDirective",
        "src": "90:19:66",
        "nodes": [],
        "literals": [
          "abicoder",
          "v2"
        ]
      },
      {
        "id": 50827,
        "nodeType": "ImportDirective",
        "src": "111:23:66",
        "nodes": [],
        "absolutePath": "test/MockEnv.sol",
        "file": "./MockEnv.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 51615,
        "sourceUnit": 50070,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 50828,
        "nodeType": "ImportDirective",
        "src": "135:28:66",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/Test.sol",
        "file": "forge-std/Test.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 51615,
        "sourceUnit": 11938,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 50829,
        "nodeType": "ImportDirective",
        "src": "164:32:66",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/console2.sol",
        "file": "forge-std/console2.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 51615,
        "sourceUnit": 29654,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 50830,
        "nodeType": "ImportDirective",
        "src": "197:28:66",
        "nodes": [],
        "absolutePath": "src/Factory.sol",
        "file": "../src/Factory.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 51615,
        "sourceUnit": 46431,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 50831,
        "nodeType": "ImportDirective",
        "src": "226:29:66",
        "nodes": [],
        "absolutePath": "src/OrderLib.sol",
        "file": "../src/OrderLib.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 51615,
        "sourceUnit": 47923,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 51614,
        "nodeType": "ContractDefinition",
        "src": "257:6879:66",
        "nodes": [
          {
            "id": 50839,
            "nodeType": "UsingForDirective",
            "src": "299:39:66",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 50836,
              "name": "OrderLib",
              "nameLocations": [
                "305:8:66"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 47922,
              "src": "305:8:66"
            },
            "typeName": {
              "id": 50838,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 50837,
                "name": "OrderLib.OrdersInfo",
                "nameLocations": [
                  "318:8:66",
                  "327:10:66"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 46509,
                "src": "318:19:66"
              },
              "referencedDeclaration": 46509,
              "src": "318:19:66",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr",
                "typeString": "struct OrderLib.OrdersInfo"
              }
            }
          },
          {
            "id": 50842,
            "nodeType": "VariableDeclaration",
            "src": "344:22:66",
            "nodes": [],
            "constant": false,
            "functionSelector": "c45a0155",
            "mutability": "mutable",
            "name": "factory",
            "nameLocation": "359:7:66",
            "scope": 51614,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Factory_$46430",
              "typeString": "contract Factory"
            },
            "typeName": {
              "id": 50841,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 50840,
                "name": "Factory",
                "nameLocations": [
                  "344:7:66"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 46430,
                "src": "344:7:66"
              },
              "referencedDeclaration": 46430,
              "src": "344:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Factory_$46430",
                "typeString": "contract Factory"
              }
            },
            "visibility": "public"
          },
          {
            "id": 50845,
            "nodeType": "VariableDeclaration",
            "src": "372:18:66",
            "nodes": [],
            "constant": false,
            "functionSelector": "fbfa77cf",
            "mutability": "mutable",
            "name": "vault",
            "nameLocation": "385:5:66",
            "scope": 51614,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vault_$49181",
              "typeString": "contract Vault"
            },
            "typeName": {
              "id": 50844,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 50843,
                "name": "Vault",
                "nameLocations": [
                  "372:5:66"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 49181,
                "src": "372:5:66"
              },
              "referencedDeclaration": 49181,
              "src": "372:5:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vault_$49181",
                "typeString": "contract Vault"
              }
            },
            "visibility": "public"
          },
          {
            "id": 50911,
            "nodeType": "FunctionDefinition",
            "src": "444:353:66",
            "nodes": [],
            "body": {
              "id": 50910,
              "nodeType": "Block",
              "src": "468:329:66",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 50848,
                      "name": "init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 49634,
                      "src": "478:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 50849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "478:6:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 50850,
                  "nodeType": "ExpressionStatement",
                  "src": "478:6:66"
                },
                {
                  "expression": {
                    "id": 50856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 50851,
                      "name": "factory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50842,
                      "src": "494:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Factory_$46430",
                        "typeString": "contract Factory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 50854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "504:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$",
                          "typeString": "function () returns (contract Factory)"
                        },
                        "typeName": {
                          "id": 50853,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50852,
                            "name": "Factory",
                            "nameLocations": [
                              "508:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46430,
                            "src": "508:7:66"
                          },
                          "referencedDeclaration": 46430,
                          "src": "508:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Factory_$46430",
                            "typeString": "contract Factory"
                          }
                        }
                      },
                      "id": 50855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "504:13:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Factory_$46430",
                        "typeString": "contract Factory"
                      }
                    },
                    "src": "494:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Factory_$46430",
                      "typeString": "contract Factory"
                    }
                  },
                  "id": 50857,
                  "nodeType": "ExpressionStatement",
                  "src": "494:23:66"
                },
                {
                  "expression": {
                    "id": 50868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 50858,
                      "name": "vault",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50845,
                      "src": "527:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$49181",
                        "typeString": "contract Vault"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 50864,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "569:4:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TestOrder_$51614",
                                    "typeString": "contract TestOrder"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_TestOrder_$51614",
                                    "typeString": "contract TestOrder"
                                  }
                                ],
                                "id": 50863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "561:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 50862,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "561:7:66",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 50865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "561:13:66",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 50860,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 50842,
                              "src": "541:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Factory_$46430",
                                "typeString": "contract Factory"
                              }
                            },
                            "id": 50861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "549:11:66",
                            "memberName": "deployVault",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 49375,
                            "src": "541:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_address_payable_$",
                              "typeString": "function (address) external returns (address payable)"
                            }
                          },
                          "id": 50866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "541:34:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 50859,
                        "name": "Vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49181,
                        "src": "535:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Vault_$49181_$",
                          "typeString": "type(contract Vault)"
                        }
                      },
                      "id": 50867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "535:41:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$49181",
                        "typeString": "contract Vault"
                      }
                    },
                    "src": "527:49:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$49181",
                      "typeString": "contract Vault"
                    }
                  },
                  "id": 50869,
                  "nodeType": "ExpressionStatement",
                  "src": "527:49:66"
                },
                {
                  "assignments": [
                    50871
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50871,
                      "mutability": "mutable",
                      "name": "coinAmount",
                      "nameLocation": "594:10:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 50910,
                      "src": "586:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 50870,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "586:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50879,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 50878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130305f303030",
                      "id": 50872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "607:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000_by_1",
                        "typeString": "int_const 100000"
                      },
                      "value": "100_000"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 50877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 50873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "617:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 50874,
                            "name": "COIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49475,
                            "src": "623:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          },
                          "id": 50875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "628:8:66",
                          "memberName": "decimals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46464,
                          "src": "623:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                            "typeString": "function () view external returns (uint8)"
                          }
                        },
                        "id": 50876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "623:15:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "617:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "607:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "586:52:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 50885,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 50845,
                            "src": "666:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          ],
                          "id": 50884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "658:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 50883,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "658:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 50886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "658:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 50887,
                        "name": "coinAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50871,
                        "src": "674:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 50880,
                        "name": "COIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49475,
                        "src": "648:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "id": 50882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "653:4:66",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46477,
                      "src": "648:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 50888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "648:37:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 50889,
                  "nodeType": "ExpressionStatement",
                  "src": "648:37:66"
                },
                {
                  "assignments": [
                    50891
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50891,
                      "mutability": "mutable",
                      "name": "usdAmount",
                      "nameLocation": "703:9:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 50910,
                      "src": "695:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 50890,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "695:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50899,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 50898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130305f303030",
                      "id": 50892,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "715:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000_by_1",
                        "typeString": "int_const 100000"
                      },
                      "value": "100_000"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 50897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 50893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "725:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 50894,
                            "name": "USD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49478,
                            "src": "731:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          },
                          "id": 50895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "735:8:66",
                          "memberName": "decimals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46464,
                          "src": "731:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                            "typeString": "function () view external returns (uint8)"
                          }
                        },
                        "id": 50896,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "731:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "725:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "715:30:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "695:50:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 50905,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 50845,
                            "src": "772:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          ],
                          "id": 50904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "764:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 50903,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "764:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 50906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "764:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 50907,
                        "name": "usdAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50891,
                        "src": "780:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 50900,
                        "name": "USD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49478,
                        "src": "755:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "id": 50902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "759:4:66",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46477,
                      "src": "755:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 50908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "755:35:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 50909,
                  "nodeType": "ExpressionStatement",
                  "src": "755:35:66"
                }
              ]
            },
            "functionSelector": "0a9254e4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUp",
            "nameLocation": "453:5:66",
            "parameters": {
              "id": 50846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "458:2:66"
            },
            "returnParameters": {
              "id": 50847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "468:0:66"
            },
            "scope": 51614,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51080,
            "nodeType": "FunctionDefinition",
            "src": "804:1973:66",
            "nodes": [],
            "body": {
              "id": 51079,
              "nodeType": "Block",
              "src": "837:1940:66",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    50919
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50919,
                      "mutability": "mutable",
                      "name": "tranches",
                      "nameLocation": "873:8:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51079,
                      "src": "847:34:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Tranche[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50917,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50916,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "847:8:66",
                              "856:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "847:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "847:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 50918,
                        "nodeType": "ArrayTypeName",
                        "src": "847:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50926,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "33",
                        "id": 50924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "907:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 50923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "884:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50921,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50920,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "888:8:66",
                              "897:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "888:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "888:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 50922,
                        "nodeType": "ArrayTypeName",
                        "src": "888:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      }
                    },
                    "id": 50925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "884:25:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "847:62:66"
                },
                {
                  "assignments": [
                    50932
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50932,
                      "mutability": "mutable",
                      "name": "constraints1",
                      "nameLocation": "948:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51079,
                      "src": "919:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50930,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50929,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "919:8:66",
                              "928:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "919:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "919:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50931,
                        "nodeType": "ArrayTypeName",
                        "src": "919:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50939,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 50937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "989:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 50936,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "963:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50934,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50933,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "967:8:66",
                              "976:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "967:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "967:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50935,
                        "nodeType": "ArrayTypeName",
                        "src": "967:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 50938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "963:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "919:72:66"
                },
                {
                  "expression": {
                    "id": 50953,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 50940,
                        "name": "constraints1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50932,
                        "src": "1001:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 50942,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 50941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1014:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1001:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 50945,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "1039:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 50946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1048:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "1039:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 50947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1063:4:66",
                          "memberName": "Time",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46585,
                          "src": "1039:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500",
                              "id": 50950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1075:261:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              },
                              "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              }
                            ],
                            "id": 50949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1069:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 50948,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1069:5:66",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 50951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1069:268:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 50943,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "1019:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 50944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1028:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "1019:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 50952,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1019:319:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "1001:337:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 50954,
                  "nodeType": "ExpressionStatement",
                  "src": "1001:337:66"
                },
                {
                  "assignments": [
                    50960
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50960,
                      "mutability": "mutable",
                      "name": "constraints2",
                      "nameLocation": "1377:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51079,
                      "src": "1348:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50958,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50957,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "1348:8:66",
                              "1357:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "1348:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "1348:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50959,
                        "nodeType": "ArrayTypeName",
                        "src": "1348:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50967,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 50965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1418:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 50964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1392:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50962,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50961,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "1396:8:66",
                              "1405:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "1396:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "1396:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50963,
                        "nodeType": "ArrayTypeName",
                        "src": "1396:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 50966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1392:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1348:72:66"
                },
                {
                  "expression": {
                    "id": 50981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 50968,
                        "name": "constraints2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50960,
                        "src": "1430:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 50970,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 50969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1443:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1430:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 50973,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "1468:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 50974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1477:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "1468:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 50975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1492:4:66",
                          "memberName": "Time",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46585,
                          "src": "1468:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "hexValue": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb",
                              "id": 50978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1504:261:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1baa90729cd095cd5e0bfa18e906ff5c09d6f932a7b0e32b71f272a3f8fa2c",
                                "typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb\""
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_6c1baa90729cd095cd5e0bfa18e906ff5c09d6f932a7b0e32b71f272a3f8fa2c",
                                "typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb\""
                              }
                            ],
                            "id": 50977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1498:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 50976,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1498:5:66",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 50979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1498:268:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 50971,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "1448:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 50972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1457:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "1448:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 50980,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1448:319:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "1430:337:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 50982,
                  "nodeType": "ExpressionStatement",
                  "src": "1430:337:66"
                },
                {
                  "assignments": [
                    50988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 50988,
                      "mutability": "mutable",
                      "name": "constraints3",
                      "nameLocation": "1806:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51079,
                      "src": "1777:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50986,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50985,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "1777:8:66",
                              "1786:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "1777:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "1777:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50987,
                        "nodeType": "ArrayTypeName",
                        "src": "1777:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 50995,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 50993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1847:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 50992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1821:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 50990,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50989,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "1825:8:66",
                              "1834:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "1825:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "1825:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 50991,
                        "nodeType": "ArrayTypeName",
                        "src": "1825:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 50994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1821:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1777:72:66"
                },
                {
                  "expression": {
                    "id": 51009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 50996,
                        "name": "constraints3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50988,
                        "src": "1859:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 50998,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 50997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1872:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1859:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 51001,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "1897:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 51002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1906:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "1897:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 51003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1921:4:66",
                          "memberName": "Time",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46585,
                          "src": "1897:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6",
                              "id": 51006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1933:261:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f868a59b2eb5b79dd27941f27d5fb74661b069a2192b78e60906c7276e9033fe",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6\""
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_f868a59b2eb5b79dd27941f27d5fb74661b069a2192b78e60906c7276e9033fe",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6\""
                              }
                            ],
                            "id": 51005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1927:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 51004,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1927:5:66",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 51007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1927:268:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 50999,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "1877:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1886:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "1877:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 51008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1877:319:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "1859:337:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 51010,
                  "nodeType": "ExpressionStatement",
                  "src": "1859:337:66"
                },
                {
                  "expression": {
                    "id": 51019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51011,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50919,
                        "src": "2206:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51013,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2215:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2206:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "3231383435",
                          "id": 51016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2237:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          "value": "21845"
                        },
                        {
                          "id": 51017,
                          "name": "constraints1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 50932,
                          "src": "2243:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51014,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "2220:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2229:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "2220:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2220:36:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "2206:50:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51020,
                  "nodeType": "ExpressionStatement",
                  "src": "2206:50:66"
                },
                {
                  "expression": {
                    "id": 51029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51021,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50919,
                        "src": "2266:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51023,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 51022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2275:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2266:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "3231383435",
                          "id": 51026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2297:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          "value": "21845"
                        },
                        {
                          "id": 51027,
                          "name": "constraints2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 50960,
                          "src": "2303:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51024,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "2280:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2289:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "2280:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2280:36:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "2266:50:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51030,
                  "nodeType": "ExpressionStatement",
                  "src": "2266:50:66"
                },
                {
                  "expression": {
                    "id": 51039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51031,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50919,
                        "src": "2326:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51033,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 51032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2335:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2326:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "3231383435",
                          "id": 51036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2357:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          "value": "21845"
                        },
                        {
                          "id": 51037,
                          "name": "constraints3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 50988,
                          "src": "2363:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_21845_by_1",
                            "typeString": "int_const 21845"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51034,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "2340:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2349:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "2340:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2340:36:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "2326:50:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51040,
                  "nodeType": "ExpressionStatement",
                  "src": "2326:50:66"
                },
                {
                  "assignments": [
                    51045
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51045,
                      "mutability": "mutable",
                      "name": "order",
                      "nameLocation": "2412:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51079,
                      "src": "2386:31:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                        "typeString": "struct OrderLib.SwapOrder"
                      },
                      "typeName": {
                        "id": 51044,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 51043,
                          "name": "OrderLib.SwapOrder",
                          "nameLocations": [
                            "2386:8:66",
                            "2395:9:66"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 46563,
                          "src": "2386:18:66"
                        },
                        "referencedDeclaration": 46563,
                        "src": "2386:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
                          "typeString": "struct OrderLib.SwapOrder"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51063,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "307846643038366243374344354334383144434339433835656245343738413143306236394643626239",
                        "id": 51048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2453:42:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"
                      },
                      {
                        "hexValue": "307838326146343934343744386130376533626439354244306435366633353234313532336642616231",
                        "id": 51049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2497:42:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 51052,
                                "name": "OrderLib",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 47922,
                                "src": "2568:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                  "typeString": "type(library OrderLib)"
                                }
                              },
                              "id": 51053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2577:8:66",
                              "memberName": "Exchange",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46537,
                              "src": "2568:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$",
                                "typeString": "type(enum OrderLib.Exchange)"
                              }
                            },
                            "id": 51054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2586:9:66",
                            "memberName": "UniswapV3",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46536,
                            "src": "2568:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            }
                          },
                          {
                            "hexValue": "353030",
                            "id": 51055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2597:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_500_by_1",
                              "typeString": "int_const 500"
                            },
                            "value": "500"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            },
                            {
                              "typeIdentifier": "t_rational_500_by_1",
                              "typeString": "int_const 500"
                            }
                          ],
                          "expression": {
                            "id": 51050,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "2553:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2562:5:66",
                          "memberName": "Route",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46543,
                          "src": "2553:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$",
                            "typeString": "type(struct OrderLib.Route storage pointer)"
                          }
                        },
                        "id": 51056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2553:48:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        }
                      },
                      {
                        "hexValue": "313030303030303030303030303030303030303030",
                        "id": 51057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2603:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                          "typeString": "int_const 100000000000000000000"
                        },
                        "value": "100000000000000000000"
                      },
                      {
                        "hexValue": "74727565",
                        "id": 51058,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2626:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2632:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "hexValue": "3138343436373434303733373039353531363135",
                        "id": 51060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2651:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18446744073709551615_by_1",
                          "typeString": "int_const 18446744073709551615"
                        },
                        "value": "18446744073709551615"
                      },
                      {
                        "id": 51061,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50919,
                        "src": "2673:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        },
                        {
                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                          "typeString": "int_const 100000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_rational_18446744073709551615_by_1",
                          "typeString": "int_const 18446744073709551615"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 51046,
                        "name": "OrderLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 47922,
                        "src": "2421:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                          "typeString": "type(library OrderLib)"
                        }
                      },
                      "id": 51047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2430:9:66",
                      "memberName": "SwapOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46563,
                      "src": "2421:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$",
                        "typeString": "type(struct OrderLib.SwapOrder storage pointer)"
                      }
                    },
                    "id": 51062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2421:270:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                      "typeString": "struct OrderLib.SwapOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2386:305:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51069,
                            "name": "order",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51045,
                            "src": "2730:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                              "typeString": "struct OrderLib.SwapOrder memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                              "typeString": "struct OrderLib.SwapOrder memory"
                            }
                          ],
                          "expression": {
                            "id": 51067,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2719:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 51068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2723:6:66",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "2719:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 51070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2719:17:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 51064,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "2701:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2710:8:66",
                      "memberName": "logBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21677,
                      "src": "2701:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) pure"
                      }
                    },
                    "id": 51071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2701:36:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51072,
                  "nodeType": "ExpressionStatement",
                  "src": "2701:36:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51076,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51045,
                        "src": "2764:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      ],
                      "expression": {
                        "id": 51073,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "2747:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2753:10:66",
                      "memberName": "placeOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49089,
                      "src": "2747:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$",
                        "typeString": "function (struct OrderLib.SwapOrder memory) external"
                      }
                    },
                    "id": 51077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2747:23:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51078,
                  "nodeType": "ExpressionStatement",
                  "src": "2747:23:66"
                }
              ]
            },
            "functionSelector": "6fe2ae0e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testPlaceOrder",
            "nameLocation": "813:14:66",
            "parameters": {
              "id": 50912,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "827:2:66"
            },
            "returnParameters": {
              "id": 50913,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:0:66"
            },
            "scope": 51614,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51235,
            "nodeType": "FunctionDefinition",
            "src": "2783:1272:66",
            "nodes": [],
            "body": {
              "id": 51234,
              "nodeType": "Block",
              "src": "2829:1226:66",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    51088
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51088,
                      "mutability": "mutable",
                      "name": "tranches",
                      "nameLocation": "2865:8:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51234,
                      "src": "2839:34:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Tranche[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51086,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51085,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "2839:8:66",
                              "2848:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "2839:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "2839:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51087,
                        "nodeType": "ArrayTypeName",
                        "src": "2839:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51095,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2899:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2876:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51090,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51089,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "2880:8:66",
                              "2889:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "2880:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "2880:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51091,
                        "nodeType": "ArrayTypeName",
                        "src": "2880:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      }
                    },
                    "id": 51094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2876:25:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2839:62:66"
                },
                {
                  "assignments": [
                    51101
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51101,
                      "mutability": "mutable",
                      "name": "constraints1",
                      "nameLocation": "2940:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51234,
                      "src": "2911:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51099,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51098,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "2911:8:66",
                              "2920:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "2911:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "2911:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51100,
                        "nodeType": "ArrayTypeName",
                        "src": "2911:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51108,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2981:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2955:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51103,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51102,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "2959:8:66",
                              "2968:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "2959:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "2959:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51104,
                        "nodeType": "ArrayTypeName",
                        "src": "2959:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 51107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2955:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2911:72:66"
                },
                {
                  "expression": {
                    "id": 51122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51109,
                        "name": "constraints1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51101,
                        "src": "2993:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 51111,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3006:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2993:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 51114,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "3031:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 51115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3040:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "3031:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 51116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3055:4:66",
                          "memberName": "Time",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46585,
                          "src": "3031:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500",
                              "id": 51119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3067:261:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              },
                              "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              }
                            ],
                            "id": 51118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3061:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 51117,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3061:5:66",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 51120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3061:268:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 51112,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "3011:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3020:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "3011:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 51121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3011:319:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "2993:337:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 51123,
                  "nodeType": "ExpressionStatement",
                  "src": "2993:337:66"
                },
                {
                  "expression": {
                    "id": 51136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51124,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51088,
                        "src": "3340:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51126,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3349:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3340:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "id": 51131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3376:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                },
                                "typeName": {
                                  "id": 51130,
                                  "name": "uint16",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3376:6:66",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                }
                              ],
                              "id": 51129,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "3371:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 51132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3371:12:66",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint16",
                              "typeString": "type(uint16)"
                            }
                          },
                          "id": 51133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3384:3:66",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "3371:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "id": 51134,
                          "name": "constraints1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51101,
                          "src": "3388:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51127,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "3354:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3363:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "3354:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51135,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3354:47:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "3340:61:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51137,
                  "nodeType": "ExpressionStatement",
                  "src": "3340:61:66"
                },
                {
                  "assignments": [
                    51139
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51139,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "3419:6:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51234,
                      "src": "3411:14:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 51138,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3411:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51149,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 51148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 51146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "33",
                        "id": 51140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3428:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 51145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 51141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3430:2:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 51142,
                              "name": "USD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 49478,
                              "src": "3434:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockERC20_$46478",
                                "typeString": "contract MockERC20"
                              }
                            },
                            "id": 51143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3438:8:66",
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46464,
                            "src": "3434:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 51144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3434:14:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "3430:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3428:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130",
                      "id": 51147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3451:2:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "3428:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3411:42:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51155,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 50845,
                            "src": "3492:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          ],
                          "id": 51154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3484:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51153,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3484:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3484:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 51157,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51139,
                        "src": "3500:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51150,
                        "name": "COIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49475,
                        "src": "3474:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "id": 51152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3479:4:66",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46477,
                      "src": "3474:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 51158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3474:33:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51159,
                  "nodeType": "ExpressionStatement",
                  "src": "3474:33:66"
                },
                {
                  "assignments": [
                    51164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51164,
                      "mutability": "mutable",
                      "name": "order",
                      "nameLocation": "3566:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51234,
                      "src": "3540:31:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                        "typeString": "struct OrderLib.SwapOrder"
                      },
                      "typeName": {
                        "id": 51163,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 51162,
                          "name": "OrderLib.SwapOrder",
                          "nameLocations": [
                            "3540:8:66",
                            "3549:9:66"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 46563,
                          "src": "3540:18:66"
                        },
                        "referencedDeclaration": 46563,
                        "src": "3540:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
                          "typeString": "struct OrderLib.SwapOrder"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51189,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51169,
                            "name": "COIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49475,
                            "src": "3615:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          ],
                          "id": 51168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3607:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51167,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3607:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3607:13:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 51173,
                            "name": "USD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49478,
                            "src": "3630:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          ],
                          "id": 51172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3622:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51171,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3622:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3622:12:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 51177,
                                "name": "OrderLib",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 47922,
                                "src": "3684:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                  "typeString": "type(library OrderLib)"
                                }
                              },
                              "id": 51178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3693:8:66",
                              "memberName": "Exchange",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46537,
                              "src": "3684:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$",
                                "typeString": "type(enum OrderLib.Exchange)"
                              }
                            },
                            "id": 51179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3702:9:66",
                            "memberName": "UniswapV3",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46536,
                            "src": "3684:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            }
                          },
                          {
                            "hexValue": "353030",
                            "id": 51180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3713:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_500_by_1",
                              "typeString": "int_const 500"
                            },
                            "value": "500"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            },
                            {
                              "typeIdentifier": "t_rational_500_by_1",
                              "typeString": "int_const 500"
                            }
                          ],
                          "expression": {
                            "id": 51175,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "3669:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3678:5:66",
                          "memberName": "Route",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46543,
                          "src": "3669:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$",
                            "typeString": "type(struct OrderLib.Route storage pointer)"
                          }
                        },
                        "id": 51181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3669:48:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        }
                      },
                      {
                        "id": 51182,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51139,
                        "src": "3719:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3727:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3734:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "expression": {
                          "id": 51185,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "3753:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3762:8:66",
                        "memberName": "NO_CHAIN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46491,
                        "src": "3753:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 51187,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51088,
                        "src": "3772:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 51165,
                        "name": "OrderLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 47922,
                        "src": "3575:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                          "typeString": "type(library OrderLib)"
                        }
                      },
                      "id": 51166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3584:9:66",
                      "memberName": "SwapOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46563,
                      "src": "3575:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$",
                        "typeString": "type(struct OrderLib.SwapOrder storage pointer)"
                      }
                    },
                    "id": 51188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3575:215:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                      "typeString": "struct OrderLib.SwapOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3540:250:66"
                },
                {
                  "assignments": [
                    51191
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51191,
                      "mutability": "mutable",
                      "name": "orderIndex",
                      "nameLocation": "3807:10:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51234,
                      "src": "3800:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 51190,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "3800:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51195,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 51192,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "3820:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3826:13:66",
                      "memberName": "numSwapOrders",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49068,
                      "src": "3820:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$",
                        "typeString": "function () view external returns (uint64)"
                      }
                    },
                    "id": 51194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3820:21:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3800:41:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51199,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51164,
                        "src": "3868:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      ],
                      "expression": {
                        "id": 51196,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "3851:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51198,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3857:10:66",
                      "memberName": "placeOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49089,
                      "src": "3851:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$",
                        "typeString": "function (struct OrderLib.SwapOrder memory) external"
                      }
                    },
                    "id": 51200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3851:23:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51201,
                  "nodeType": "ExpressionStatement",
                  "src": "3851:23:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "706c61636564206f72646572",
                        "id": 51205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3897:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        },
                        "value": "placed order"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        }
                      ],
                      "expression": {
                        "id": 51202,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "3884:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3893:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "3884:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3884:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51207,
                  "nodeType": "ExpressionStatement",
                  "src": "3884:28:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51213,
                            "name": "orderIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51191,
                            "src": "3940:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 51212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3935:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 51211,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3935:4:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3935:16:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51208,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "3922:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3931:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22139,
                      "src": "3922:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) pure"
                      }
                    },
                    "id": 51215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3922:30:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51216,
                  "nodeType": "ExpressionStatement",
                  "src": "3922:30:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51220,
                        "name": "orderIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51191,
                        "src": "3976:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 51221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3988:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 51224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4011:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "id": 51222,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "3991:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4000:10:66",
                          "memberName": "PriceProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46641,
                          "src": "3991:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$",
                            "typeString": "type(struct OrderLib.PriceProof storage pointer)"
                          }
                        },
                        "id": 51225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3991:22:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      ],
                      "expression": {
                        "id": 51217,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "3962:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51219,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3968:7:66",
                      "memberName": "execute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49143,
                      "src": "3962:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external"
                      }
                    },
                    "id": 51226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3962:52:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51227,
                  "nodeType": "ExpressionStatement",
                  "src": "3962:52:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "6578656375746564",
                        "id": 51231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4037:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1",
                          "typeString": "literal_string \"executed\""
                        },
                        "value": "executed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1",
                          "typeString": "literal_string \"executed\""
                        }
                      ],
                      "expression": {
                        "id": 51228,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "4024:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4033:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "4024:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4024:24:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51233,
                  "nodeType": "ExpressionStatement",
                  "src": "4024:24:66"
                }
              ]
            },
            "functionSelector": "9febdbf7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testExecuteOrderExactOutput",
            "nameLocation": "2792:27:66",
            "parameters": {
              "id": 51081,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2819:2:66"
            },
            "returnParameters": {
              "id": 51082,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2829:0:66"
            },
            "scope": 51614,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51390,
            "nodeType": "FunctionDefinition",
            "src": "4062:1272:66",
            "nodes": [],
            "body": {
              "id": 51389,
              "nodeType": "Block",
              "src": "4107:1227:66",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    51243
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51243,
                      "mutability": "mutable",
                      "name": "tranches",
                      "nameLocation": "4143:8:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51389,
                      "src": "4117:34:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Tranche[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51241,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51240,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "4117:8:66",
                              "4126:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "4117:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "4117:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51242,
                        "nodeType": "ArrayTypeName",
                        "src": "4117:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51250,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4177:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4154:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51245,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51244,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "4158:8:66",
                              "4167:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "4158:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "4158:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51246,
                        "nodeType": "ArrayTypeName",
                        "src": "4158:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      }
                    },
                    "id": 51249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4154:25:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4117:62:66"
                },
                {
                  "assignments": [
                    51256
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51256,
                      "mutability": "mutable",
                      "name": "constraints1",
                      "nameLocation": "4218:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51389,
                      "src": "4189:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51254,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51253,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "4189:8:66",
                              "4198:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "4189:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "4189:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51255,
                        "nodeType": "ArrayTypeName",
                        "src": "4189:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51263,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4259:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4233:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51258,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51257,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "4237:8:66",
                              "4246:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "4237:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "4237:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51259,
                        "nodeType": "ArrayTypeName",
                        "src": "4237:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 51262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4233:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4189:72:66"
                },
                {
                  "expression": {
                    "id": 51277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51264,
                        "name": "constraints1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51256,
                        "src": "4271:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 51266,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4284:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4271:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 51269,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "4309:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 51270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4318:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "4309:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 51271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4333:4:66",
                          "memberName": "Time",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46585,
                          "src": "4309:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500",
                              "id": 51274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4345:261:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              },
                              "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80",
                                "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\""
                              }
                            ],
                            "id": 51273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4339:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 51272,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4339:5:66",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 51275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4339:268:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 51267,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "4289:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4298:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "4289:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 51276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4289:319:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "4271:337:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 51278,
                  "nodeType": "ExpressionStatement",
                  "src": "4271:337:66"
                },
                {
                  "expression": {
                    "id": 51291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51279,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51243,
                        "src": "4618:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51281,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4627:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4618:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "id": 51286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4654:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                },
                                "typeName": {
                                  "id": 51285,
                                  "name": "uint16",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4654:6:66",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                }
                              ],
                              "id": 51284,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "4649:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 51287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4649:12:66",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint16",
                              "typeString": "type(uint16)"
                            }
                          },
                          "id": 51288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4662:3:66",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "4649:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "id": 51289,
                          "name": "constraints1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51256,
                          "src": "4666:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51282,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "4632:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4641:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "4632:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51290,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4632:47:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "4618:61:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51292,
                  "nodeType": "ExpressionStatement",
                  "src": "4618:61:66"
                },
                {
                  "assignments": [
                    51294
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51294,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "4697:6:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51389,
                      "src": "4689:14:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 51293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4689:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51304,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 51303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 51301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "33",
                        "id": 51295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4706:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 51300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 51296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4708:2:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 51297,
                              "name": "COIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 49475,
                              "src": "4712:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockERC20_$46478",
                                "typeString": "contract MockERC20"
                              }
                            },
                            "id": 51298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4717:8:66",
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46464,
                            "src": "4712:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 51299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4712:15:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "4708:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4706:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130",
                      "id": 51302,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4730:2:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "4706:26:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4689:43:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51310,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 50845,
                            "src": "4772:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          ],
                          "id": 51309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4764:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51308,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4764:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4764:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 51312,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51294,
                        "src": "4780:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51305,
                        "name": "COIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49475,
                        "src": "4754:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "id": 51307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4759:4:66",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46477,
                      "src": "4754:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 51313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4754:33:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51314,
                  "nodeType": "ExpressionStatement",
                  "src": "4754:33:66"
                },
                {
                  "assignments": [
                    51319
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51319,
                      "mutability": "mutable",
                      "name": "order",
                      "nameLocation": "4846:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51389,
                      "src": "4820:31:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                        "typeString": "struct OrderLib.SwapOrder"
                      },
                      "typeName": {
                        "id": 51318,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 51317,
                          "name": "OrderLib.SwapOrder",
                          "nameLocations": [
                            "4820:8:66",
                            "4829:9:66"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 46563,
                          "src": "4820:18:66"
                        },
                        "referencedDeclaration": 46563,
                        "src": "4820:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
                          "typeString": "struct OrderLib.SwapOrder"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51344,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51324,
                            "name": "COIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49475,
                            "src": "4895:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          ],
                          "id": 51323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4887:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51322,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4887:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4887:13:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 51328,
                            "name": "USD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49478,
                            "src": "4910:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockERC20_$46478",
                              "typeString": "contract MockERC20"
                            }
                          ],
                          "id": 51327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4902:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51326,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4902:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4902:12:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 51332,
                                "name": "OrderLib",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 47922,
                                "src": "4964:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                  "typeString": "type(library OrderLib)"
                                }
                              },
                              "id": 51333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4973:8:66",
                              "memberName": "Exchange",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46537,
                              "src": "4964:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$",
                                "typeString": "type(enum OrderLib.Exchange)"
                              }
                            },
                            "id": 51334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4982:9:66",
                            "memberName": "UniswapV3",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46536,
                            "src": "4964:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            }
                          },
                          {
                            "id": 51335,
                            "name": "fee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49472,
                            "src": "4993:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            },
                            {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          ],
                          "expression": {
                            "id": 51330,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "4949:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4958:5:66",
                          "memberName": "Route",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46543,
                          "src": "4949:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$",
                            "typeString": "type(struct OrderLib.Route storage pointer)"
                          }
                        },
                        "id": 51336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4949:48:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        }
                      },
                      {
                        "id": 51337,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51294,
                        "src": "4999:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 51338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5007:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5013:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "expression": {
                          "id": 51340,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "5032:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "5041:8:66",
                        "memberName": "NO_CHAIN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46491,
                        "src": "5032:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 51342,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51243,
                        "src": "5051:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 51320,
                        "name": "OrderLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 47922,
                        "src": "4855:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                          "typeString": "type(library OrderLib)"
                        }
                      },
                      "id": 51321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4864:9:66",
                      "memberName": "SwapOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46563,
                      "src": "4855:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$",
                        "typeString": "type(struct OrderLib.SwapOrder storage pointer)"
                      }
                    },
                    "id": 51343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4855:214:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                      "typeString": "struct OrderLib.SwapOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4820:249:66"
                },
                {
                  "assignments": [
                    51346
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51346,
                      "mutability": "mutable",
                      "name": "orderIndex",
                      "nameLocation": "5086:10:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51389,
                      "src": "5079:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 51345,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "5079:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51350,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 51347,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "5099:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5105:13:66",
                      "memberName": "numSwapOrders",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49068,
                      "src": "5099:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$",
                        "typeString": "function () view external returns (uint64)"
                      }
                    },
                    "id": 51349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5099:21:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5079:41:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51354,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51319,
                        "src": "5147:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      ],
                      "expression": {
                        "id": 51351,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "5130:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51353,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5136:10:66",
                      "memberName": "placeOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49089,
                      "src": "5130:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$",
                        "typeString": "function (struct OrderLib.SwapOrder memory) external"
                      }
                    },
                    "id": 51355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5130:23:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51356,
                  "nodeType": "ExpressionStatement",
                  "src": "5130:23:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "706c61636564206f72646572",
                        "id": 51360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5176:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        },
                        "value": "placed order"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        }
                      ],
                      "expression": {
                        "id": 51357,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "5163:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5172:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "5163:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5163:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51362,
                  "nodeType": "ExpressionStatement",
                  "src": "5163:28:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51368,
                            "name": "orderIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51346,
                            "src": "5219:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 51367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5214:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 51366,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5214:4:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5214:16:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51363,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "5201:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51365,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5210:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22139,
                      "src": "5201:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) pure"
                      }
                    },
                    "id": 51370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5201:30:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51371,
                  "nodeType": "ExpressionStatement",
                  "src": "5201:30:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51375,
                        "name": "orderIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51346,
                        "src": "5255:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 51376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5267:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 51379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5290:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "id": 51377,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "5270:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5279:10:66",
                          "memberName": "PriceProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46641,
                          "src": "5270:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$",
                            "typeString": "type(struct OrderLib.PriceProof storage pointer)"
                          }
                        },
                        "id": 51380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5270:22:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      ],
                      "expression": {
                        "id": 51372,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "5241:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5247:7:66",
                      "memberName": "execute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49143,
                      "src": "5241:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external"
                      }
                    },
                    "id": 51381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5241:52:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51382,
                  "nodeType": "ExpressionStatement",
                  "src": "5241:52:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "6578656375746564",
                        "id": 51386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5316:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1",
                          "typeString": "literal_string \"executed\""
                        },
                        "value": "executed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1",
                          "typeString": "literal_string \"executed\""
                        }
                      ],
                      "expression": {
                        "id": 51383,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "5303:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5312:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "5303:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5303:24:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51388,
                  "nodeType": "ExpressionStatement",
                  "src": "5303:24:66"
                }
              ]
            },
            "functionSelector": "8e3b558a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testExecuteOrderExactInput",
            "nameLocation": "4071:26:66",
            "parameters": {
              "id": 51236,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4097:2:66"
            },
            "returnParameters": {
              "id": 51237,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4107:0:66"
            },
            "scope": 51614,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51613,
            "nodeType": "FunctionDefinition",
            "src": "5341:1792:66",
            "nodes": [],
            "body": {
              "id": 51612,
              "nodeType": "Block",
              "src": "5381:1752:66",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    51398
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51398,
                      "mutability": "mutable",
                      "name": "tranches",
                      "nameLocation": "5470:8:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5444:34:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Tranche[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51396,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51395,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "5444:8:66",
                              "5453:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "5444:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "5444:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51397,
                        "nodeType": "ArrayTypeName",
                        "src": "5444:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51405,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5504:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5481:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51400,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51399,
                            "name": "OrderLib.Tranche",
                            "nameLocations": [
                              "5485:8:66",
                              "5494:7:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46638,
                            "src": "5485:16:66"
                          },
                          "referencedDeclaration": 46638,
                          "src": "5485:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr",
                            "typeString": "struct OrderLib.Tranche"
                          }
                        },
                        "id": 51401,
                        "nodeType": "ArrayTypeName",
                        "src": "5485:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Tranche[]"
                        }
                      }
                    },
                    "id": 51404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5481:25:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5444:62:66"
                },
                {
                  "assignments": [
                    51411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51411,
                      "mutability": "mutable",
                      "name": "constraints1",
                      "nameLocation": "5545:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5516:41:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct OrderLib.Constraint[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51409,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51408,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "5516:8:66",
                              "5525:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "5516:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "5516:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51410,
                        "nodeType": "ArrayTypeName",
                        "src": "5516:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51418,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 51416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5586:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 51415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5560:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 51413,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 51412,
                            "name": "OrderLib.Constraint",
                            "nameLocations": [
                              "5564:8:66",
                              "5573:10:66"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 46594,
                            "src": "5564:19:66"
                          },
                          "referencedDeclaration": 46594,
                          "src": "5564:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr",
                            "typeString": "struct OrderLib.Constraint"
                          }
                        },
                        "id": 51414,
                        "nodeType": "ArrayTypeName",
                        "src": "5564:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr",
                          "typeString": "struct OrderLib.Constraint[]"
                        }
                      }
                    },
                    "id": 51417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5560:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5516:72:66"
                },
                {
                  "assignments": [
                    51420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51420,
                      "mutability": "mutable",
                      "name": "limit",
                      "nameLocation": "5606:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5598:13:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 51419,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "5598:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51427,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 51426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "id": 51424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 51421,
                          "name": "price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 49983,
                          "src": "5614:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint160_$",
                            "typeString": "function () view returns (uint160)"
                          }
                        },
                        "id": 51422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5614:7:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "hexValue": "3130303031",
                        "id": 51423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5624:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10001_by_1",
                          "typeString": "int_const 10001"
                        },
                        "value": "10001"
                      },
                      "src": "5614:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130303030",
                      "id": 51425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5632:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000_by_1",
                        "typeString": "int_const 10000"
                      },
                      "value": "10000"
                    },
                    "src": "5614:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5598:39:66"
                },
                {
                  "assignments": [
                    51429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51429,
                      "mutability": "mutable",
                      "name": "serialized",
                      "nameLocation": "5691:10:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5678:23:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 51428,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5678:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51441,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "74727565",
                            "id": 51434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5740:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "hexValue": "66616c7365",
                            "id": 51435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5746:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "hexValue": "30",
                            "id": 51436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5753:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "id": 51437,
                            "name": "limit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51420,
                            "src": "5756:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "hexValue": "30",
                            "id": 51438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5763:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "id": 51432,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "5716:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5725:14:66",
                          "memberName": "LineConstraint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46605,
                          "src": "5716:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$",
                            "typeString": "type(struct OrderLib.LineConstraint storage pointer)"
                          }
                        },
                        "id": 51439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5716:49:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr",
                          "typeString": "struct OrderLib.LineConstraint memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr",
                          "typeString": "struct OrderLib.LineConstraint memory"
                        }
                      ],
                      "expression": {
                        "id": 51430,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5704:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 51431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5708:6:66",
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "5704:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 51440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5704:63:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5678:89:66"
                },
                {
                  "expression": {
                    "id": 51452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51442,
                        "name": "constraints1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51411,
                        "src": "5777:12:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Constraint memory[] memory"
                        }
                      },
                      "id": 51444,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5790:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5777:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "expression": {
                              "id": 51447,
                              "name": "OrderLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 47922,
                              "src": "5815:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                "typeString": "type(library OrderLib)"
                              }
                            },
                            "id": 51448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5824:14:66",
                            "memberName": "ConstraintMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46588,
                            "src": "5815:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$",
                              "typeString": "type(enum OrderLib.ConstraintMode)"
                            }
                          },
                          "id": 51449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5839:4:66",
                          "memberName": "Line",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46586,
                          "src": "5815:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          }
                        },
                        {
                          "id": 51450,
                          "name": "serialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51429,
                          "src": "5845:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_ConstraintMode_$46588",
                            "typeString": "enum OrderLib.ConstraintMode"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "id": 51445,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "5795:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5804:10:66",
                        "memberName": "Constraint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46594,
                        "src": "5795:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Constraint storage pointer)"
                        }
                      },
                      "id": 51451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5795:61:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                        "typeString": "struct OrderLib.Constraint memory"
                      }
                    },
                    "src": "5777:79:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr",
                      "typeString": "struct OrderLib.Constraint memory"
                    }
                  },
                  "id": 51453,
                  "nodeType": "ExpressionStatement",
                  "src": "5777:79:66"
                },
                {
                  "expression": {
                    "id": 51466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51454,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51398,
                        "src": "5866:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      },
                      "id": 51456,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 51455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5875:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5866:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "id": 51461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5902:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                },
                                "typeName": {
                                  "id": 51460,
                                  "name": "uint16",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5902:6:66",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint16_$",
                                  "typeString": "type(uint16)"
                                }
                              ],
                              "id": 51459,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "5897:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 51462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5897:12:66",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint16",
                              "typeString": "type(uint16)"
                            }
                          },
                          "id": 51463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5910:3:66",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "5897:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "id": 51464,
                          "name": "constraints1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51411,
                          "src": "5914:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct OrderLib.Constraint memory[] memory"
                          }
                        ],
                        "expression": {
                          "id": 51457,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "5880:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5889:7:66",
                        "memberName": "Tranche",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46638,
                        "src": "5880:16:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$",
                          "typeString": "type(struct OrderLib.Tranche storage pointer)"
                        }
                      },
                      "id": 51465,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5880:47:66",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                        "typeString": "struct OrderLib.Tranche memory"
                      }
                    },
                    "src": "5866:61:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr",
                      "typeString": "struct OrderLib.Tranche memory"
                    }
                  },
                  "id": 51467,
                  "nodeType": "ExpressionStatement",
                  "src": "5866:61:66"
                },
                {
                  "assignments": [
                    51470
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51470,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "5947:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5937:15:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MockERC20_$46478",
                        "typeString": "contract MockERC20"
                      },
                      "typeName": {
                        "id": 51469,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 51468,
                          "name": "MockERC20",
                          "nameLocations": [
                            "5937:9:66"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 46478,
                          "src": "5937:9:66"
                        },
                        "referencedDeclaration": 46478,
                        "src": "5937:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51474,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 51472,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49480,
                        "src": "5965:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51471,
                      "name": "MockERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46478,
                      "src": "5955:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$",
                        "typeString": "type(contract MockERC20)"
                      }
                    },
                    "id": 51473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5955:17:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MockERC20_$46478",
                      "typeString": "contract MockERC20"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5937:35:66"
                },
                {
                  "assignments": [
                    51476
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51476,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "5990:6:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "5982:14:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 51475,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5982:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51486,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 51485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 51483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "33",
                        "id": 51477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5999:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 51482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 51478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6001:2:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 51479,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 51470,
                              "src": "6005:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockERC20_$46478",
                                "typeString": "contract MockERC20"
                              }
                            },
                            "id": 51480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6011:8:66",
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46464,
                            "src": "6005:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 51481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6005:16:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "6001:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5999:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130",
                      "id": 51484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6024:2:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "5999:27:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5982:44:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51492,
                            "name": "vault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 50845,
                            "src": "6077:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Vault_$49181",
                              "typeString": "contract Vault"
                            }
                          ],
                          "id": 51491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6069:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 51490,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6069:7:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6069:14:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 51494,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51476,
                        "src": "6085:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51487,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51470,
                        "src": "6058:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockERC20_$46478",
                          "typeString": "contract MockERC20"
                        }
                      },
                      "id": 51489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6064:4:66",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46477,
                      "src": "6058:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 51495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6058:34:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51496,
                  "nodeType": "ExpressionStatement",
                  "src": "6058:34:66"
                },
                {
                  "assignments": [
                    51501
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51501,
                      "mutability": "mutable",
                      "name": "order",
                      "nameLocation": "6128:5:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "6102:31:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                        "typeString": "struct OrderLib.SwapOrder"
                      },
                      "typeName": {
                        "id": 51500,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 51499,
                          "name": "OrderLib.SwapOrder",
                          "nameLocations": [
                            "6102:8:66",
                            "6111:9:66"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 46563,
                          "src": "6102:18:66"
                        },
                        "referencedDeclaration": 46563,
                        "src": "6102:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
                          "typeString": "struct OrderLib.SwapOrder"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51520,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 51504,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49480,
                        "src": "6169:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 51505,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49482,
                        "src": "6177:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "expression": {
                                "id": 51508,
                                "name": "OrderLib",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 47922,
                                "src": "6220:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                                  "typeString": "type(library OrderLib)"
                                }
                              },
                              "id": 51509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6229:8:66",
                              "memberName": "Exchange",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46537,
                              "src": "6220:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$",
                                "typeString": "type(enum OrderLib.Exchange)"
                              }
                            },
                            "id": 51510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6238:9:66",
                            "memberName": "UniswapV3",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 46536,
                            "src": "6220:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            }
                          },
                          {
                            "id": 51511,
                            "name": "fee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49472,
                            "src": "6249:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_Exchange_$46537",
                              "typeString": "enum OrderLib.Exchange"
                            },
                            {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          ],
                          "expression": {
                            "id": 51506,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "6205:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6214:5:66",
                          "memberName": "Route",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46543,
                          "src": "6205:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$",
                            "typeString": "type(struct OrderLib.Route storage pointer)"
                          }
                        },
                        "id": 51512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6205:48:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        }
                      },
                      {
                        "id": 51513,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51476,
                        "src": "6255:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 51514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6263:4:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6269:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "expression": {
                          "id": 51516,
                          "name": "OrderLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47922,
                          "src": "6288:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                            "typeString": "type(library OrderLib)"
                          }
                        },
                        "id": 51517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "6297:8:66",
                        "memberName": "NO_CHAIN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 46491,
                        "src": "6288:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 51518,
                        "name": "tranches",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51398,
                        "src": "6307:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Route_$46543_memory_ptr",
                          "typeString": "struct OrderLib.Route memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OrderLib.Tranche memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 51502,
                        "name": "OrderLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 47922,
                        "src": "6137:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                          "typeString": "type(library OrderLib)"
                        }
                      },
                      "id": 51503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6146:9:66",
                      "memberName": "SwapOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46563,
                      "src": "6137:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$",
                        "typeString": "type(struct OrderLib.SwapOrder storage pointer)"
                      }
                    },
                    "id": 51519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6137:188:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                      "typeString": "struct OrderLib.SwapOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6102:223:66"
                },
                {
                  "assignments": [
                    51522
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 51522,
                      "mutability": "mutable",
                      "name": "orderIndex",
                      "nameLocation": "6342:10:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 51612,
                      "src": "6335:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 51521,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "6335:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 51526,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 51523,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "6355:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6361:13:66",
                      "memberName": "numSwapOrders",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49068,
                      "src": "6355:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$",
                        "typeString": "function () view external returns (uint64)"
                      }
                    },
                    "id": 51525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6355:21:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6335:41:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51530,
                        "name": "order",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51501,
                        "src": "6403:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
                          "typeString": "struct OrderLib.SwapOrder memory"
                        }
                      ],
                      "expression": {
                        "id": 51527,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "6386:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6392:10:66",
                      "memberName": "placeOrder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49089,
                      "src": "6386:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$",
                        "typeString": "function (struct OrderLib.SwapOrder memory) external"
                      }
                    },
                    "id": 51531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6386:23:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51532,
                  "nodeType": "ExpressionStatement",
                  "src": "6386:23:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "706c61636564206f72646572",
                        "id": 51536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6432:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        },
                        "value": "placed order"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398",
                          "typeString": "literal_string \"placed order\""
                        }
                      ],
                      "expression": {
                        "id": 51533,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "6419:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6428:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "6419:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6419:28:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51538,
                  "nodeType": "ExpressionStatement",
                  "src": "6419:28:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 51544,
                            "name": "orderIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51522,
                            "src": "6475:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 51543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6470:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 51542,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6470:4:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6470:16:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 51539,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "6457:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6466:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22139,
                      "src": "6457:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) pure"
                      }
                    },
                    "id": 51546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6457:30:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51547,
                  "nodeType": "ExpressionStatement",
                  "src": "6457:30:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "4c",
                            "id": 51553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6520:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                              "typeString": "literal_string \"L\""
                            },
                            "value": "L"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                              "typeString": "literal_string \"L\""
                            }
                          ],
                          "id": 51552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6514:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 51551,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6514:5:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6514:10:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 51548,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2350,
                        "src": "6498:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 51550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6501:12:66",
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13118,
                      "src": "6498:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 51555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6498:27:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51556,
                  "nodeType": "ExpressionStatement",
                  "src": "6498:27:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51560,
                        "name": "orderIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51522,
                        "src": "6549:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 51561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6561:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 51564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6584:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "id": 51562,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "6564:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6573:10:66",
                          "memberName": "PriceProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46641,
                          "src": "6564:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$",
                            "typeString": "type(struct OrderLib.PriceProof storage pointer)"
                          }
                        },
                        "id": 51565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6564:22:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      ],
                      "expression": {
                        "id": 51557,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "6535:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6541:7:66",
                      "memberName": "execute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49143,
                      "src": "6535:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external"
                      }
                    },
                    "id": 51566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6535:52:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51567,
                  "nodeType": "ExpressionStatement",
                  "src": "6535:52:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d6974207072696365",
                        "id": 51571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6641:50:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_52958288131189f806dbc5813123c9aea95086ad9a4cae861df015336613042f",
                          "typeString": "literal_string \"successfully failed to execute below limit price\""
                        },
                        "value": "successfully failed to execute below limit price"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_52958288131189f806dbc5813123c9aea95086ad9a4cae861df015336613042f",
                          "typeString": "literal_string \"successfully failed to execute below limit price\""
                        }
                      ],
                      "expression": {
                        "id": 51568,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "6628:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6637:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "6628:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6628:64:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51573,
                  "nodeType": "ExpressionStatement",
                  "src": "6628:64:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51575,
                        "name": "limit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51420,
                        "src": "6715:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 51574,
                      "name": "swapToPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50068,
                      "src": "6703:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$",
                        "typeString": "function (uint160)"
                      }
                    },
                    "id": 51576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6703:18:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51577,
                  "nodeType": "ExpressionStatement",
                  "src": "6703:18:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "4c",
                            "id": 51583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6788:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                              "typeString": "literal_string \"L\""
                            },
                            "value": "L"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8",
                              "typeString": "literal_string \"L\""
                            }
                          ],
                          "id": 51582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6782:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 51581,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "6782:5:66",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 51584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6782:10:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 51578,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2350,
                        "src": "6766:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 51580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6769:12:66",
                      "memberName": "expectRevert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13118,
                      "src": "6766:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 51585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6766:27:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51586,
                  "nodeType": "ExpressionStatement",
                  "src": "6766:27:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51590,
                        "name": "orderIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51522,
                        "src": "6895:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 51591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6907:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 51594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6930:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "id": 51592,
                            "name": "OrderLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47922,
                            "src": "6910:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$",
                              "typeString": "type(library OrderLib)"
                            }
                          },
                          "id": 51593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6919:10:66",
                          "memberName": "PriceProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46641,
                          "src": "6910:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$",
                            "typeString": "type(struct OrderLib.PriceProof storage pointer)"
                          }
                        },
                        "id": 51595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6910:22:66",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
                          "typeString": "struct OrderLib.PriceProof memory"
                        }
                      ],
                      "expression": {
                        "id": 51587,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50845,
                        "src": "6881:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$49181",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 51589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6887:7:66",
                      "memberName": "execute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 49143,
                      "src": "6881:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external"
                      }
                    },
                    "id": 51596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6881:52:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51597,
                  "nodeType": "ExpressionStatement",
                  "src": "6881:52:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "id": 51603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 51601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 51599,
                            "name": "limit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 51420,
                            "src": "7005:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "hexValue": "3130303031",
                            "id": 51600,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7011:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10001_by_1",
                              "typeString": "int_const 10001"
                            },
                            "value": "10001"
                          },
                          "src": "7005:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "hexValue": "3130303030",
                          "id": 51602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7017:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000_by_1",
                            "typeString": "int_const 10000"
                          },
                          "value": "10000"
                        },
                        "src": "7005:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 51598,
                      "name": "swapToPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50068,
                      "src": "6993:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$",
                        "typeString": "function (uint160)"
                      }
                    },
                    "id": 51604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6993:30:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51605,
                  "nodeType": "ExpressionStatement",
                  "src": "6993:30:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "7375636365737366756c6c79206578656375746564206174206c696d6974207072696365",
                        "id": 51609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7087:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_69a31268b01a4613dad6c1387f864d9780e93269e30ca7918f7bc7cb9e0f014e",
                          "typeString": "literal_string \"successfully executed at limit price\""
                        },
                        "value": "successfully executed at limit price"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_69a31268b01a4613dad6c1387f864d9780e93269e30ca7918f7bc7cb9e0f014e",
                          "typeString": "literal_string \"successfully executed at limit price\""
                        }
                      ],
                      "expression": {
                        "id": 51606,
                        "name": "console2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29653,
                        "src": "7074:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
                          "typeString": "type(library console2)"
                        }
                      },
                      "id": 51608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7083:3:66",
                      "memberName": "log",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22167,
                      "src": "7074:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 51610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7074:52:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51611,
                  "nodeType": "ExpressionStatement",
                  "src": "7074:52:66"
                }
              ]
            },
            "functionSelector": "7083accc",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testExecuteLimitOrder",
            "nameLocation": "5350:21:66",
            "parameters": {
              "id": 51391,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5371:2:66"
            },
            "returnParameters": {
              "id": 51392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5381:0:66"
            },
            "scope": 51614,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 50832,
              "name": "MockEnv",
              "nameLocations": [
                "279:7:66"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 50069,
              "src": "279:7:66"
            },
            "id": 50833,
            "nodeType": "InheritanceSpecifier",
            "src": "279:7:66"
          },
          {
            "baseName": {
              "id": 50834,
              "name": "Test",
              "nameLocations": [
                "288:4:66"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 11937,
              "src": "288:4:66"
            },
            "id": 50835,
            "nodeType": "InheritanceSpecifier",
            "src": "288:4:66"
          }
        ],
        "canonicalName": "TestOrder",
        "contractDependencies": [
          46430,
          46478
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "internalFunctionIDs": {
          "21582": 1
        },
        "linearizedBaseContracts": [
          51614,
          11937,
          2357,
          2354,
          11886,
          7624,
          7334,
          6570,
          4516,
          3823,
          2291,
          50069
        ],
        "name": "TestOrder",
        "nameLocation": "266:9:66",
        "scope": 51615,
        "usedErrors": [],
        "usedEvents": [
          5,
          9,
          13,
          17,
          21,
          25,
          29,
          33,
          39,
          45,
          53,
          61,
          67,
          73,
          79,
          85,
          2418,
          2423,
          2428,
          2435,
          2442,
          2449
        ]
      }
    ],
    "license": "UNLICENSED"
  },
  "id": 66
}