{
  "contractName": "IBroker",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "exchangeProvider",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "exchangeId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        }
      ],
      "name": "swapIn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "exchangeProvider",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "exchangeId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "getAmountOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"exchangeProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"exchangeProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"exchangeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"}],\"name\":\"swapIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairMentoV2.sol\":\"IBroker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02\",\"dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairMentoV2.sol\":{\"keccak256\":\"0x457366b80d0141982f3c6b410c6418aa6dde851f3866feeddaa56c27cd9eb335\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d808e90d23735646f45fddc4311e63112c74ddc48d2099fa24c9fc1e774e969\",\"dweb:/ipfs/QmSLwrK7UvR569tT1J7K2ACybixnuvWqhGVicqkBVgRRns\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.8;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"./ISwappaPairV1.sol\";\n\ninterface IBroker {\n    function swapIn(\n        address exchangeProvider,\n        bytes32 exchangeId,\n        address tokenIn,\n        address tokenOut,\n        uint256 amountIn,\n        uint256 amountOutMin\n    ) external returns (uint256 amountOut);\n\n    function getAmountOut(\n        address exchangeProvider,\n        bytes32 exchangeId,\n        address tokenIn,\n        address tokenOut,\n        uint256 amountIn\n    ) external view returns (uint256 amountOut);\n}\n\ncontract PairMentoV2 is ISwappaPairV1 {\n    function swap(\n        address input,\n        address output,\n        address to,\n        bytes calldata data\n    ) external override {\n        (\n            address _broker,\n            address exchangeProvider,\n            bytes32 exchangeId\n        ) = parseData(data);\n        uint inputAmount = ERC20(input).balanceOf(address(this));\n        require(\n            ERC20(input).approve(_broker, inputAmount),\n            \"PairMentoV2: approve failed!\"\n        );\n        IBroker broker = IBroker(_broker);\n        uint256 amountOut = broker.swapIn(\n                exchangeProvider,\n                exchangeId,\n                input,\n                output,\n                inputAmount,\n                0\n            );\n        require(\n            IERC20(output).transfer(to, amountOut),\n            \"PairMentoV2: transfer failed!\"\n        );\n\n    }\n\n    function parseData(\n        bytes memory data\n    )\n        public\n        pure\n        returns (address broker, address exchangeProvider, bytes32 exchangeId)\n    {\n        require(data.length == 72, \"PairMentoV2: invalid data!\");\n        assembly {\n            broker := mload(add(data, 20))\n            exchangeProvider := mload(add(data, 40))\n            exchangeId := mload(add(data, 72))\n        }\n    }\n\n    function getOutputAmount(\n        address input,\n        address output,\n        uint256 amountIn,\n        bytes calldata data\n    ) external override returns (uint amountOut) {\n        (\n            address _broker,\n            address exchangeProvider,\n            bytes32 exchangeId\n        ) = parseData(data);\n        IBroker broker = IBroker(_broker);\n        return\n            broker.getAmountOut(\n                exchangeProvider,\n                exchangeId,\n                input,\n                output,\n                amountIn\n            );\n    }\n\n    receive() external payable {}\n}",
  "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/swappa/PairMentoV2.sol",
  "ast": {
    "absolutePath": "project:/contracts/swappa/PairMentoV2.sol",
    "exportedSymbols": {
      "IBroker": [
        6122
      ],
      "PairMentoV2": [
        6265
      ]
    },
    "id": 6266,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6087,
        "literals": [
          "solidity",
          "0.6",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:51"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 6088,
        "nodeType": "ImportDirective",
        "scope": 6266,
        "sourceUnit": 726,
        "src": "56:55:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
        "file": "./ISwappaPairV1.sol",
        "id": 6089,
        "nodeType": "ImportDirective",
        "scope": 6266,
        "sourceUnit": 5326,
        "src": "112:29:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 6122,
        "linearizedBaseContracts": [
          6122
        ],
        "name": "IBroker",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ddbbe850",
            "id": 6106,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapIn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6091,
                  "mutability": "mutable",
                  "name": "exchangeProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "192:24:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6090,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "192:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6093,
                  "mutability": "mutable",
                  "name": "exchangeId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "226:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6092,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "226:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6095,
                  "mutability": "mutable",
                  "name": "tokenIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "254:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6094,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "254:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6097,
                  "mutability": "mutable",
                  "name": "tokenOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "279:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "279:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6099,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "305:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6098,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "305:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6101,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "331:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6100,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "331:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "182:175:51"
            },
            "returnParameters": {
              "id": 6105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6104,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6106,
                  "src": "376:17:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6103,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "375:19:51"
            },
            "scope": 6122,
            "src": "167:228:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a20f2305",
            "id": 6121,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountOut",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6108,
                  "mutability": "mutable",
                  "name": "exchangeProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "432:24:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "432:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6110,
                  "mutability": "mutable",
                  "name": "exchangeId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "466:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "466:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6112,
                  "mutability": "mutable",
                  "name": "tokenIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "494:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "494:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6114,
                  "mutability": "mutable",
                  "name": "tokenOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "519:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "519:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6116,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "545:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "545:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "422:145:51"
            },
            "returnParameters": {
              "id": 6120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6119,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6121,
                  "src": "591:17:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "591:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "590:19:51"
            },
            "scope": 6122,
            "src": "401:209:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6266,
        "src": "143:469:51"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6123,
              "name": "ISwappaPairV1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5325,
              "src": "638:13:51",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                "typeString": "contract ISwappaPairV1"
              }
            },
            "id": 6124,
            "nodeType": "InheritanceSpecifier",
            "src": "638:13:51"
          }
        ],
        "contractDependencies": [
          5325
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6265,
        "linearizedBaseContracts": [
          6265,
          5325
        ],
        "name": "PairMentoV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              5311
            ],
            "body": {
              "id": 6198,
              "nodeType": "Block",
              "src": "792:719:51",
              "statements": [
                {
                  "assignments": [
                    6137,
                    6139,
                    6141
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6137,
                      "mutability": "mutable",
                      "name": "_broker",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "816:15:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6136,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "816:7:51",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6139,
                      "mutability": "mutable",
                      "name": "exchangeProvider",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "845:24:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6138,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "845:7:51",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6141,
                      "mutability": "mutable",
                      "name": "exchangeId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "883:18:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6140,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "883:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6145,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6143,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6132,
                        "src": "924:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 6142,
                      "name": "parseData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6220,
                      "src": "914:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (address,address,bytes32)"
                      }
                    },
                    "id": 6144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "914:15:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_bytes32_$",
                      "typeString": "tuple(address,address,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "802:127:51"
                },
                {
                  "assignments": [
                    6147
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6147,
                      "mutability": "mutable",
                      "name": "inputAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "939:16:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6146,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "939:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6157,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6154,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "989:4:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                              "typeString": "contract PairMentoV2"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                              "typeString": "contract PairMentoV2"
                            }
                          ],
                          "id": 6153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "981:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6152,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "981:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "981:13:51",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6149,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6126,
                            "src": "964:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6148,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 725,
                          "src": "958:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 6150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "958:12:51",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$725",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 6151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 325,
                      "src": "958:22:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "958:37:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "939:56:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6163,
                            "name": "_broker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6137,
                            "src": "1047:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6164,
                            "name": "inputAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6147,
                            "src": "1056:11:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6160,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6126,
                                "src": "1032:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6159,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "1026:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 6161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1026:12:51",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$725",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 6162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "approve",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 385,
                          "src": "1026:20:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 6165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1026:42:51",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "506169724d656e746f56323a20617070726f7665206661696c656421",
                        "id": 6166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1082:30:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                          "typeString": "literal_string \"PairMentoV2: approve failed!\""
                        },
                        "value": "PairMentoV2: approve failed!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                          "typeString": "literal_string \"PairMentoV2: approve failed!\""
                        }
                      ],
                      "id": 6158,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1005:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1005:117:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6168,
                  "nodeType": "ExpressionStatement",
                  "src": "1005:117:51"
                },
                {
                  "assignments": [
                    6170
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6170,
                      "mutability": "mutable",
                      "name": "broker",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "1132:14:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBroker_$6122",
                        "typeString": "contract IBroker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6169,
                        "name": "IBroker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6122,
                        "src": "1132:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBroker_$6122",
                          "typeString": "contract IBroker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6174,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6172,
                        "name": "_broker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6137,
                        "src": "1157:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6171,
                      "name": "IBroker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6122,
                      "src": "1149:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IBroker_$6122_$",
                        "typeString": "type(contract IBroker)"
                      }
                    },
                    "id": 6173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1149:16:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBroker_$6122",
                      "typeString": "contract IBroker"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1132:33:51"
                },
                {
                  "assignments": [
                    6176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6176,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6198,
                      "src": "1175:17:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6175,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1175:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6186,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6179,
                        "name": "exchangeProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6139,
                        "src": "1226:16:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6180,
                        "name": "exchangeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6141,
                        "src": "1260:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6181,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6126,
                        "src": "1288:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6182,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6128,
                        "src": "1311:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6183,
                        "name": "inputAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6147,
                        "src": "1335:11:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1364:1:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6177,
                        "name": "broker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6170,
                        "src": "1195:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBroker_$6122",
                          "typeString": "contract IBroker"
                        }
                      },
                      "id": 6178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "swapIn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6106,
                      "src": "1195:13:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32,address,address,uint256,uint256) external returns (uint256)"
                      }
                    },
                    "id": 6185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1195:184:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1175:204:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6192,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6130,
                            "src": "1434:2:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6193,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6176,
                            "src": "1438:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6189,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6128,
                                "src": "1417:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6188,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "1410:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$803_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 6190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1410:14:51",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$803",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 6191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 752,
                          "src": "1410:23:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 6194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1410:38:51",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "506169724d656e746f56323a207472616e73666572206661696c656421",
                        "id": 6195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1462:31:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                          "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                        },
                        "value": "PairMentoV2: transfer failed!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                          "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                        }
                      ],
                      "id": 6187,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1389:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1389:114:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6197,
                  "nodeType": "ExpressionStatement",
                  "src": "1389:114:51"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "32ef8314",
            "id": 6199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6134,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "783:8:51"
            },
            "parameters": {
              "id": 6133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6126,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6199,
                  "src": "681:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "681:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6128,
                  "mutability": "mutable",
                  "name": "output",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6199,
                  "src": "704:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6127,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6130,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6199,
                  "src": "728:10:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6129,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "728:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6132,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6199,
                  "src": "748:19:51",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6131,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "748:5:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "671:102:51"
            },
            "returnParameters": {
              "id": 6135,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "792:0:51"
            },
            "scope": 6265,
            "src": "658:853:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6219,
              "nodeType": "Block",
              "src": "1680:245:51",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6211,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6201,
                            "src": "1698:4:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 6212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1698:11:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3732",
                          "id": 6213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1713:2:51",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_72_by_1",
                            "typeString": "int_const 72"
                          },
                          "value": "72"
                        },
                        "src": "1698:17:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "506169724d656e746f56323a20696e76616c6964206461746121",
                        "id": 6215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1717:28:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                          "typeString": "literal_string \"PairMentoV2: invalid data!\""
                        },
                        "value": "PairMentoV2: invalid data!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                          "typeString": "literal_string \"PairMentoV2: invalid data!\""
                        }
                      ],
                      "id": 6210,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1690:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1690:56:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6217,
                  "nodeType": "ExpressionStatement",
                  "src": "1690:56:51"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1765:154:51",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1779:30:51",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1799:4:51"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1805:2:51",
                                  "type": "",
                                  "value": "20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1795:3:51"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1795:13:51"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1789:5:51"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1789:20:51"
                        },
                        "variableNames": [
                          {
                            "name": "broker",
                            "nodeType": "YulIdentifier",
                            "src": "1779:6:51"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1822:40:51",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1852:4:51"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1858:2:51",
                                  "type": "",
                                  "value": "40"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1848:3:51"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1848:13:51"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1842:5:51"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1842:20:51"
                        },
                        "variableNames": [
                          {
                            "name": "exchangeProvider",
                            "nodeType": "YulIdentifier",
                            "src": "1822:16:51"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1875:34:51",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1899:4:51"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1905:2:51",
                                  "type": "",
                                  "value": "72"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1895:3:51"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1895:13:51"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1889:5:51"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1889:20:51"
                        },
                        "variableNames": [
                          {
                            "name": "exchangeId",
                            "nodeType": "YulIdentifier",
                            "src": "1875:10:51"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 6204,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1779:6:51",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6201,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1799:4:51",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6201,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1852:4:51",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6201,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1899:4:51",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6208,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1875:10:51",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6206,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1822:16:51",
                      "valueSize": 1
                    }
                  ],
                  "id": 6218,
                  "nodeType": "InlineAssembly",
                  "src": "1756:163:51"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "65b8de2e",
            "id": 6220,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6201,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6220,
                  "src": "1545:17:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6200,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1545:5:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1535:33:51"
            },
            "returnParameters": {
              "id": 6209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6204,
                  "mutability": "mutable",
                  "name": "broker",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6220,
                  "src": "1614:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6206,
                  "mutability": "mutable",
                  "name": "exchangeProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6220,
                  "src": "1630:24:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6205,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1630:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6208,
                  "mutability": "mutable",
                  "name": "exchangeId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6220,
                  "src": "1656:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6207,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1656:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:62:51"
            },
            "scope": 6265,
            "src": "1517:408:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5324
            ],
            "body": {
              "id": 6259,
              "nodeType": "Block",
              "src": "2107:384:51",
              "statements": [
                {
                  "assignments": [
                    6235,
                    6237,
                    6239
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6235,
                      "mutability": "mutable",
                      "name": "_broker",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6259,
                      "src": "2131:15:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6234,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2131:7:51",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6237,
                      "mutability": "mutable",
                      "name": "exchangeProvider",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6259,
                      "src": "2160:24:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6236,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2160:7:51",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6239,
                      "mutability": "mutable",
                      "name": "exchangeId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6259,
                      "src": "2198:18:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6238,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2198:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6243,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6241,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6228,
                        "src": "2239:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 6240,
                      "name": "parseData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6220,
                      "src": "2229:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (address,address,bytes32)"
                      }
                    },
                    "id": 6242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2229:15:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_bytes32_$",
                      "typeString": "tuple(address,address,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2117:127:51"
                },
                {
                  "assignments": [
                    6245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6245,
                      "mutability": "mutable",
                      "name": "broker",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6259,
                      "src": "2254:14:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBroker_$6122",
                        "typeString": "contract IBroker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6244,
                        "name": "IBroker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6122,
                        "src": "2254:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBroker_$6122",
                          "typeString": "contract IBroker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6249,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6247,
                        "name": "_broker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6235,
                        "src": "2279:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6246,
                      "name": "IBroker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6122,
                      "src": "2271:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IBroker_$6122_$",
                        "typeString": "type(contract IBroker)"
                      }
                    },
                    "id": 6248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2271:16:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBroker_$6122",
                      "typeString": "contract IBroker"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2254:33:51"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6252,
                        "name": "exchangeProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6237,
                        "src": "2353:16:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6253,
                        "name": "exchangeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6239,
                        "src": "2387:10:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6254,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6222,
                        "src": "2415:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6255,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6224,
                        "src": "2438:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6256,
                        "name": "amountIn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6226,
                        "src": "2462:8:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6250,
                        "name": "broker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6245,
                        "src": "2316:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBroker_$6122",
                          "typeString": "contract IBroker"
                        }
                      },
                      "id": 6251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAmountOut",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6121,
                      "src": "2316:19:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32,address,address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 6257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2316:168:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6233,
                  "id": 6258,
                  "nodeType": "Return",
                  "src": "2297:187:51"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "7eace892",
            "id": 6260,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutputAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6230,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2073:8:51"
            },
            "parameters": {
              "id": 6229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6222,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6260,
                  "src": "1965:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1965:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6224,
                  "mutability": "mutable",
                  "name": "output",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6260,
                  "src": "1988:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1988:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6226,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6260,
                  "src": "2012:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6225,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2012:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6228,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6260,
                  "src": "2038:19:51",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6227,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2038:5:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1955:108:51"
            },
            "returnParameters": {
              "id": 6233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6232,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6260,
                  "src": "2091:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6231,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2091:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2090:16:51"
            },
            "scope": 6265,
            "src": "1931:560:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6263,
              "nodeType": "Block",
              "src": "2524:2:51",
              "statements": []
            },
            "documentation": null,
            "id": 6264,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2504:2:51"
            },
            "returnParameters": {
              "id": 6262,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2524:0:51"
            },
            "scope": 6265,
            "src": "2497:29:51",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6266,
        "src": "614:1914:51"
      }
    ],
    "src": "32:2496:51"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/swappa/PairMentoV2.sol",
      "exportedSymbols": {
        "IBroker": [
          6122
        ],
        "PairMentoV2": [
          6265
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".8"
          ]
        },
        "id": 6087,
        "name": "PragmaDirective",
        "src": "32:22:51"
      },
      {
        "attributes": {
          "SourceUnit": 726,
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "scope": 6266,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6088,
        "name": "ImportDirective",
        "src": "56:55:51"
      },
      {
        "attributes": {
          "SourceUnit": 5326,
          "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
          "file": "./ISwappaPairV1.sol",
          "scope": 6266,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6089,
        "name": "ImportDirective",
        "src": "112:29:51"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            6122
          ],
          "name": "IBroker",
          "scope": 6266
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "ddbbe850",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "swapIn",
              "overrides": null,
              "scope": 6122,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeProvider",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6090,
                        "name": "ElementaryTypeName",
                        "src": "192:7:51"
                      }
                    ],
                    "id": 6091,
                    "name": "VariableDeclaration",
                    "src": "192:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeId",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6092,
                        "name": "ElementaryTypeName",
                        "src": "226:7:51"
                      }
                    ],
                    "id": 6093,
                    "name": "VariableDeclaration",
                    "src": "226:18:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6094,
                        "name": "ElementaryTypeName",
                        "src": "254:7:51"
                      }
                    ],
                    "id": 6095,
                    "name": "VariableDeclaration",
                    "src": "254:15:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenOut",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6096,
                        "name": "ElementaryTypeName",
                        "src": "279:7:51"
                      }
                    ],
                    "id": 6097,
                    "name": "VariableDeclaration",
                    "src": "279:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6098,
                        "name": "ElementaryTypeName",
                        "src": "305:7:51"
                      }
                    ],
                    "id": 6099,
                    "name": "VariableDeclaration",
                    "src": "305:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6100,
                        "name": "ElementaryTypeName",
                        "src": "331:7:51"
                      }
                    ],
                    "id": 6101,
                    "name": "VariableDeclaration",
                    "src": "331:20:51"
                  }
                ],
                "id": 6102,
                "name": "ParameterList",
                "src": "182:175:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 6106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6103,
                        "name": "ElementaryTypeName",
                        "src": "376:7:51"
                      }
                    ],
                    "id": 6104,
                    "name": "VariableDeclaration",
                    "src": "376:17:51"
                  }
                ],
                "id": 6105,
                "name": "ParameterList",
                "src": "375:19:51"
              }
            ],
            "id": 6106,
            "name": "FunctionDefinition",
            "src": "167:228:51"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "a20f2305",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getAmountOut",
              "overrides": null,
              "scope": 6122,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeProvider",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6107,
                        "name": "ElementaryTypeName",
                        "src": "432:7:51"
                      }
                    ],
                    "id": 6108,
                    "name": "VariableDeclaration",
                    "src": "432:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeId",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6109,
                        "name": "ElementaryTypeName",
                        "src": "466:7:51"
                      }
                    ],
                    "id": 6110,
                    "name": "VariableDeclaration",
                    "src": "466:18:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6111,
                        "name": "ElementaryTypeName",
                        "src": "494:7:51"
                      }
                    ],
                    "id": 6112,
                    "name": "VariableDeclaration",
                    "src": "494:15:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenOut",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6113,
                        "name": "ElementaryTypeName",
                        "src": "519:7:51"
                      }
                    ],
                    "id": 6114,
                    "name": "VariableDeclaration",
                    "src": "519:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6115,
                        "name": "ElementaryTypeName",
                        "src": "545:7:51"
                      }
                    ],
                    "id": 6116,
                    "name": "VariableDeclaration",
                    "src": "545:16:51"
                  }
                ],
                "id": 6117,
                "name": "ParameterList",
                "src": "422:145:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 6121,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6118,
                        "name": "ElementaryTypeName",
                        "src": "591:7:51"
                      }
                    ],
                    "id": 6119,
                    "name": "VariableDeclaration",
                    "src": "591:17:51"
                  }
                ],
                "id": 6120,
                "name": "ParameterList",
                "src": "590:19:51"
              }
            ],
            "id": 6121,
            "name": "FunctionDefinition",
            "src": "401:209:51"
          }
        ],
        "id": 6122,
        "name": "ContractDefinition",
        "src": "143:469:51"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            5325
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6265,
            5325
          ],
          "name": "PairMentoV2",
          "scope": 6266
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ISwappaPairV1",
                  "referencedDeclaration": 5325,
                  "type": "contract ISwappaPairV1"
                },
                "id": 6123,
                "name": "UserDefinedTypeName",
                "src": "638:13:51"
              }
            ],
            "id": 6124,
            "name": "InheritanceSpecifier",
            "src": "638:13:51"
          },
          {
            "attributes": {
              "baseFunctions": [
                5311
              ],
              "documentation": null,
              "functionSelector": "32ef8314",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "swap",
              "scope": 6265,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 6134,
                "name": "OverrideSpecifier",
                "src": "783:8:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 6199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6125,
                        "name": "ElementaryTypeName",
                        "src": "681:7:51"
                      }
                    ],
                    "id": 6126,
                    "name": "VariableDeclaration",
                    "src": "681:13:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "output",
                      "overrides": null,
                      "scope": 6199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6127,
                        "name": "ElementaryTypeName",
                        "src": "704:7:51"
                      }
                    ],
                    "id": 6128,
                    "name": "VariableDeclaration",
                    "src": "704:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 6199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6129,
                        "name": "ElementaryTypeName",
                        "src": "728:7:51"
                      }
                    ],
                    "id": 6130,
                    "name": "VariableDeclaration",
                    "src": "728:10:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6199,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6131,
                        "name": "ElementaryTypeName",
                        "src": "748:5:51"
                      }
                    ],
                    "id": 6132,
                    "name": "VariableDeclaration",
                    "src": "748:19:51"
                  }
                ],
                "id": 6133,
                "name": "ParameterList",
                "src": "671:102:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6135,
                "name": "ParameterList",
                "src": "792:0:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6137,
                        6139,
                        6141
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_broker",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6136,
                            "name": "ElementaryTypeName",
                            "src": "816:7:51"
                          }
                        ],
                        "id": 6137,
                        "name": "VariableDeclaration",
                        "src": "816:15:51"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exchangeProvider",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6138,
                            "name": "ElementaryTypeName",
                            "src": "845:7:51"
                          }
                        ],
                        "id": 6139,
                        "name": "VariableDeclaration",
                        "src": "845:24:51"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exchangeId",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 6140,
                            "name": "ElementaryTypeName",
                            "src": "883:7:51"
                          }
                        ],
                        "id": 6141,
                        "name": "VariableDeclaration",
                        "src": "883:18:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(address,address,bytes32)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6220,
                              "type": "function (bytes memory) pure returns (address,address,bytes32)",
                              "value": "parseData"
                            },
                            "id": 6142,
                            "name": "Identifier",
                            "src": "914:9:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6132,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 6143,
                            "name": "Identifier",
                            "src": "924:4:51"
                          }
                        ],
                        "id": 6144,
                        "name": "FunctionCall",
                        "src": "914:15:51"
                      }
                    ],
                    "id": 6145,
                    "name": "VariableDeclarationStatement",
                    "src": "802:127:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6147
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "inputAmount",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 6146,
                            "name": "ElementaryTypeName",
                            "src": "939:4:51"
                          }
                        ],
                        "id": 6147,
                        "name": "VariableDeclaration",
                        "src": "939:16:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balanceOf",
                              "referencedDeclaration": 325,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ERC20",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 725,
                                      "type": "type(contract ERC20)",
                                      "value": "ERC20"
                                    },
                                    "id": 6148,
                                    "name": "Identifier",
                                    "src": "958:5:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6126,
                                      "type": "address",
                                      "value": "input"
                                    },
                                    "id": 6149,
                                    "name": "Identifier",
                                    "src": "964:5:51"
                                  }
                                ],
                                "id": 6150,
                                "name": "FunctionCall",
                                "src": "958:12:51"
                              }
                            ],
                            "id": 6151,
                            "name": "MemberAccess",
                            "src": "958:22:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                                      "typeString": "contract PairMentoV2"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 6152,
                                    "name": "ElementaryTypeName",
                                    "src": "981:7:51"
                                  }
                                ],
                                "id": 6153,
                                "name": "ElementaryTypeNameExpression",
                                "src": "981:7:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract PairMentoV2",
                                  "value": "this"
                                },
                                "id": 6154,
                                "name": "Identifier",
                                "src": "989:4:51"
                              }
                            ],
                            "id": 6155,
                            "name": "FunctionCall",
                            "src": "981:13:51"
                          }
                        ],
                        "id": 6156,
                        "name": "FunctionCall",
                        "src": "958:37:51"
                      }
                    ],
                    "id": 6157,
                    "name": "VariableDeclarationStatement",
                    "src": "939:56:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                                  "typeString": "literal_string \"PairMentoV2: approve failed!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6158,
                            "name": "Identifier",
                            "src": "1005:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "approve",
                                  "referencedDeclaration": 385,
                                  "type": "function (address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract ERC20",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 725,
                                          "type": "type(contract ERC20)",
                                          "value": "ERC20"
                                        },
                                        "id": 6159,
                                        "name": "Identifier",
                                        "src": "1026:5:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6126,
                                          "type": "address",
                                          "value": "input"
                                        },
                                        "id": 6160,
                                        "name": "Identifier",
                                        "src": "1032:5:51"
                                      }
                                    ],
                                    "id": 6161,
                                    "name": "FunctionCall",
                                    "src": "1026:12:51"
                                  }
                                ],
                                "id": 6162,
                                "name": "MemberAccess",
                                "src": "1026:20:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6137,
                                  "type": "address",
                                  "value": "_broker"
                                },
                                "id": 6163,
                                "name": "Identifier",
                                "src": "1047:7:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6147,
                                  "type": "uint256",
                                  "value": "inputAmount"
                                },
                                "id": 6164,
                                "name": "Identifier",
                                "src": "1056:11:51"
                              }
                            ],
                            "id": 6165,
                            "name": "FunctionCall",
                            "src": "1026:42:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "506169724d656e746f56323a20617070726f7665206661696c656421",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairMentoV2: approve failed!\"",
                              "value": "PairMentoV2: approve failed!"
                            },
                            "id": 6166,
                            "name": "Literal",
                            "src": "1082:30:51"
                          }
                        ],
                        "id": 6167,
                        "name": "FunctionCall",
                        "src": "1005:117:51"
                      }
                    ],
                    "id": 6168,
                    "name": "ExpressionStatement",
                    "src": "1005:117:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6170
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "broker",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IBroker",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IBroker",
                              "referencedDeclaration": 6122,
                              "type": "contract IBroker"
                            },
                            "id": 6169,
                            "name": "UserDefinedTypeName",
                            "src": "1132:7:51"
                          }
                        ],
                        "id": 6170,
                        "name": "VariableDeclaration",
                        "src": "1132:14:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IBroker",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6122,
                              "type": "type(contract IBroker)",
                              "value": "IBroker"
                            },
                            "id": 6171,
                            "name": "Identifier",
                            "src": "1149:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6137,
                              "type": "address",
                              "value": "_broker"
                            },
                            "id": 6172,
                            "name": "Identifier",
                            "src": "1157:7:51"
                          }
                        ],
                        "id": 6173,
                        "name": "FunctionCall",
                        "src": "1149:16:51"
                      }
                    ],
                    "id": 6174,
                    "name": "VariableDeclarationStatement",
                    "src": "1132:33:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6176
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amountOut",
                          "overrides": null,
                          "scope": 6198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6175,
                            "name": "ElementaryTypeName",
                            "src": "1175:7:51"
                          }
                        ],
                        "id": 6176,
                        "name": "VariableDeclaration",
                        "src": "1175:17:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "swapIn",
                              "referencedDeclaration": 6106,
                              "type": "function (address,bytes32,address,address,uint256,uint256) external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6170,
                                  "type": "contract IBroker",
                                  "value": "broker"
                                },
                                "id": 6177,
                                "name": "Identifier",
                                "src": "1195:6:51"
                              }
                            ],
                            "id": 6178,
                            "name": "MemberAccess",
                            "src": "1195:13:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6139,
                              "type": "address",
                              "value": "exchangeProvider"
                            },
                            "id": 6179,
                            "name": "Identifier",
                            "src": "1226:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6141,
                              "type": "bytes32",
                              "value": "exchangeId"
                            },
                            "id": 6180,
                            "name": "Identifier",
                            "src": "1260:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6126,
                              "type": "address",
                              "value": "input"
                            },
                            "id": 6181,
                            "name": "Identifier",
                            "src": "1288:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6128,
                              "type": "address",
                              "value": "output"
                            },
                            "id": 6182,
                            "name": "Identifier",
                            "src": "1311:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6147,
                              "type": "uint256",
                              "value": "inputAmount"
                            },
                            "id": 6183,
                            "name": "Identifier",
                            "src": "1335:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6184,
                            "name": "Literal",
                            "src": "1364:1:51"
                          }
                        ],
                        "id": 6185,
                        "name": "FunctionCall",
                        "src": "1195:184:51"
                      }
                    ],
                    "id": 6186,
                    "name": "VariableDeclarationStatement",
                    "src": "1175:204:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                                  "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6187,
                            "name": "Identifier",
                            "src": "1389:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transfer",
                                  "referencedDeclaration": 752,
                                  "type": "function (address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract IERC20",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 803,
                                          "type": "type(contract IERC20)",
                                          "value": "IERC20"
                                        },
                                        "id": 6188,
                                        "name": "Identifier",
                                        "src": "1410:6:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6128,
                                          "type": "address",
                                          "value": "output"
                                        },
                                        "id": 6189,
                                        "name": "Identifier",
                                        "src": "1417:6:51"
                                      }
                                    ],
                                    "id": 6190,
                                    "name": "FunctionCall",
                                    "src": "1410:14:51"
                                  }
                                ],
                                "id": 6191,
                                "name": "MemberAccess",
                                "src": "1410:23:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6130,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 6192,
                                "name": "Identifier",
                                "src": "1434:2:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6176,
                                  "type": "uint256",
                                  "value": "amountOut"
                                },
                                "id": 6193,
                                "name": "Identifier",
                                "src": "1438:9:51"
                              }
                            ],
                            "id": 6194,
                            "name": "FunctionCall",
                            "src": "1410:38:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "506169724d656e746f56323a207472616e73666572206661696c656421",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairMentoV2: transfer failed!\"",
                              "value": "PairMentoV2: transfer failed!"
                            },
                            "id": 6195,
                            "name": "Literal",
                            "src": "1462:31:51"
                          }
                        ],
                        "id": 6196,
                        "name": "FunctionCall",
                        "src": "1389:114:51"
                      }
                    ],
                    "id": 6197,
                    "name": "ExpressionStatement",
                    "src": "1389:114:51"
                  }
                ],
                "id": 6198,
                "name": "Block",
                "src": "792:719:51"
              }
            ],
            "id": 6199,
            "name": "FunctionDefinition",
            "src": "658:853:51"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "65b8de2e",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "parseData",
              "overrides": null,
              "scope": 6265,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6220,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6200,
                        "name": "ElementaryTypeName",
                        "src": "1545:5:51"
                      }
                    ],
                    "id": 6201,
                    "name": "VariableDeclaration",
                    "src": "1545:17:51"
                  }
                ],
                "id": 6202,
                "name": "ParameterList",
                "src": "1535:33:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "broker",
                      "overrides": null,
                      "scope": 6220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6203,
                        "name": "ElementaryTypeName",
                        "src": "1614:7:51"
                      }
                    ],
                    "id": 6204,
                    "name": "VariableDeclaration",
                    "src": "1614:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeProvider",
                      "overrides": null,
                      "scope": 6220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6205,
                        "name": "ElementaryTypeName",
                        "src": "1630:7:51"
                      }
                    ],
                    "id": 6206,
                    "name": "VariableDeclaration",
                    "src": "1630:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "exchangeId",
                      "overrides": null,
                      "scope": 6220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6207,
                        "name": "ElementaryTypeName",
                        "src": "1656:7:51"
                      }
                    ],
                    "id": 6208,
                    "name": "VariableDeclaration",
                    "src": "1656:18:51"
                  }
                ],
                "id": 6209,
                "name": "ParameterList",
                "src": "1613:62:51"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                                  "typeString": "literal_string \"PairMentoV2: invalid data!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6210,
                            "name": "Identifier",
                            "src": "1690:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6201,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 6211,
                                    "name": "Identifier",
                                    "src": "1698:4:51"
                                  }
                                ],
                                "id": 6212,
                                "name": "MemberAccess",
                                "src": "1698:11:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3732",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 72",
                                  "value": "72"
                                },
                                "id": 6213,
                                "name": "Literal",
                                "src": "1713:2:51"
                              }
                            ],
                            "id": 6214,
                            "name": "BinaryOperation",
                            "src": "1698:17:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "506169724d656e746f56323a20696e76616c6964206461746121",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairMentoV2: invalid data!\"",
                              "value": "PairMentoV2: invalid data!"
                            },
                            "id": 6215,
                            "name": "Literal",
                            "src": "1717:28:51"
                          }
                        ],
                        "id": 6216,
                        "name": "FunctionCall",
                        "src": "1690:56:51"
                      }
                    ],
                    "id": 6217,
                    "name": "ExpressionStatement",
                    "src": "1690:56:51"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 6204,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1779:6:51",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6201,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1799:4:51",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6201,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1852:4:51",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6201,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1899:4:51",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6208,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1875:10:51",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6206,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1822:16:51",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    broker := mload(add(data, 20))\n    exchangeProvider := mload(add(data, 40))\n    exchangeId := mload(add(data, 72))\n}"
                    },
                    "children": [],
                    "id": 6218,
                    "name": "InlineAssembly",
                    "src": "1756:163:51"
                  }
                ],
                "id": 6219,
                "name": "Block",
                "src": "1680:245:51"
              }
            ],
            "id": 6220,
            "name": "FunctionDefinition",
            "src": "1517:408:51"
          },
          {
            "attributes": {
              "baseFunctions": [
                5324
              ],
              "documentation": null,
              "functionSelector": "7eace892",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getOutputAmount",
              "scope": 6265,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 6230,
                "name": "OverrideSpecifier",
                "src": "2073:8:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 6260,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6221,
                        "name": "ElementaryTypeName",
                        "src": "1965:7:51"
                      }
                    ],
                    "id": 6222,
                    "name": "VariableDeclaration",
                    "src": "1965:13:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "output",
                      "overrides": null,
                      "scope": 6260,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6223,
                        "name": "ElementaryTypeName",
                        "src": "1988:7:51"
                      }
                    ],
                    "id": 6224,
                    "name": "VariableDeclaration",
                    "src": "1988:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 6260,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6225,
                        "name": "ElementaryTypeName",
                        "src": "2012:7:51"
                      }
                    ],
                    "id": 6226,
                    "name": "VariableDeclaration",
                    "src": "2012:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6260,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6227,
                        "name": "ElementaryTypeName",
                        "src": "2038:5:51"
                      }
                    ],
                    "id": 6228,
                    "name": "VariableDeclaration",
                    "src": "2038:19:51"
                  }
                ],
                "id": 6229,
                "name": "ParameterList",
                "src": "1955:108:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 6260,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6231,
                        "name": "ElementaryTypeName",
                        "src": "2091:4:51"
                      }
                    ],
                    "id": 6232,
                    "name": "VariableDeclaration",
                    "src": "2091:14:51"
                  }
                ],
                "id": 6233,
                "name": "ParameterList",
                "src": "2090:16:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6235,
                        6237,
                        6239
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_broker",
                          "overrides": null,
                          "scope": 6259,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6234,
                            "name": "ElementaryTypeName",
                            "src": "2131:7:51"
                          }
                        ],
                        "id": 6235,
                        "name": "VariableDeclaration",
                        "src": "2131:15:51"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exchangeProvider",
                          "overrides": null,
                          "scope": 6259,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6236,
                            "name": "ElementaryTypeName",
                            "src": "2160:7:51"
                          }
                        ],
                        "id": 6237,
                        "name": "VariableDeclaration",
                        "src": "2160:24:51"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exchangeId",
                          "overrides": null,
                          "scope": 6259,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 6238,
                            "name": "ElementaryTypeName",
                            "src": "2198:7:51"
                          }
                        ],
                        "id": 6239,
                        "name": "VariableDeclaration",
                        "src": "2198:18:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(address,address,bytes32)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6220,
                              "type": "function (bytes memory) pure returns (address,address,bytes32)",
                              "value": "parseData"
                            },
                            "id": 6240,
                            "name": "Identifier",
                            "src": "2229:9:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6228,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 6241,
                            "name": "Identifier",
                            "src": "2239:4:51"
                          }
                        ],
                        "id": 6242,
                        "name": "FunctionCall",
                        "src": "2229:15:51"
                      }
                    ],
                    "id": 6243,
                    "name": "VariableDeclarationStatement",
                    "src": "2117:127:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6245
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "broker",
                          "overrides": null,
                          "scope": 6259,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IBroker",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IBroker",
                              "referencedDeclaration": 6122,
                              "type": "contract IBroker"
                            },
                            "id": 6244,
                            "name": "UserDefinedTypeName",
                            "src": "2254:7:51"
                          }
                        ],
                        "id": 6245,
                        "name": "VariableDeclaration",
                        "src": "2254:14:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IBroker",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6122,
                              "type": "type(contract IBroker)",
                              "value": "IBroker"
                            },
                            "id": 6246,
                            "name": "Identifier",
                            "src": "2271:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6235,
                              "type": "address",
                              "value": "_broker"
                            },
                            "id": 6247,
                            "name": "Identifier",
                            "src": "2279:7:51"
                          }
                        ],
                        "id": 6248,
                        "name": "FunctionCall",
                        "src": "2271:16:51"
                      }
                    ],
                    "id": 6249,
                    "name": "VariableDeclarationStatement",
                    "src": "2254:33:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6233
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getAmountOut",
                              "referencedDeclaration": 6121,
                              "type": "function (address,bytes32,address,address,uint256) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6245,
                                  "type": "contract IBroker",
                                  "value": "broker"
                                },
                                "id": 6250,
                                "name": "Identifier",
                                "src": "2316:6:51"
                              }
                            ],
                            "id": 6251,
                            "name": "MemberAccess",
                            "src": "2316:19:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6237,
                              "type": "address",
                              "value": "exchangeProvider"
                            },
                            "id": 6252,
                            "name": "Identifier",
                            "src": "2353:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6239,
                              "type": "bytes32",
                              "value": "exchangeId"
                            },
                            "id": 6253,
                            "name": "Identifier",
                            "src": "2387:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6222,
                              "type": "address",
                              "value": "input"
                            },
                            "id": 6254,
                            "name": "Identifier",
                            "src": "2415:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6224,
                              "type": "address",
                              "value": "output"
                            },
                            "id": 6255,
                            "name": "Identifier",
                            "src": "2438:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6226,
                              "type": "uint256",
                              "value": "amountIn"
                            },
                            "id": 6256,
                            "name": "Identifier",
                            "src": "2462:8:51"
                          }
                        ],
                        "id": 6257,
                        "name": "FunctionCall",
                        "src": "2316:168:51"
                      }
                    ],
                    "id": 6258,
                    "name": "Return",
                    "src": "2297:187:51"
                  }
                ],
                "id": 6259,
                "name": "Block",
                "src": "2107:384:51"
              }
            ],
            "id": 6260,
            "name": "FunctionDefinition",
            "src": "1931:560:51"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 6265,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6261,
                "name": "ParameterList",
                "src": "2504:2:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6262,
                "name": "ParameterList",
                "src": "2524:0:51"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 6263,
                "name": "Block",
                "src": "2524:2:51"
              }
            ],
            "id": 6264,
            "name": "FunctionDefinition",
            "src": "2497:29:51"
          }
        ],
        "id": 6265,
        "name": "ContractDefinition",
        "src": "614:1914:51"
      }
    ],
    "id": 6266,
    "name": "SourceUnit",
    "src": "32:2496:51"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.832Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}